Skip to main content

开发者后台管理API

Revision history

Release timeRevision Notes
2026-05-07Supports automatic creation of Pangle advertising sources, covering various advertising type conversion and adaptation scenarios.
2026-04-14Interface function update: Add optional parameters for querying advertising source information, create and edit intermediary groups, and support the update operation of the default group.
2026-04-09Supports automatic creation of Meta and AdMob advertising sources, covering various advertising type conversion and adaptation scenarios.
2026-03-25Support A/B testing full process management capabilities

1 Obtain API Key

Log in to the backend, click on the company name, enter "My Account", "API Key", and obtain the API Key and secret key.

NamePurpose
API Key(bear)Identifies the user
secretGenerates the request signature

2 API Integration

All requests are in post mode. The default format of POST request data is: multipart/form-data; the request domain name is: https://openapi.tradplusad.com

2.1 Common Request Parameters

ParameterDescriptionTransmission MethodExample
bearAPI keyHTTP Header157E4A5D-3877-1236-DE06-457FT3F70C4
signsignGET5DE008C88087D8556D276A9E5B8E37E6
timestampTimestamp, seconds of current timeGET1629525680
nonce16-bit random characters, a combination of numbers and lettersGET5c672d4e9628d0a7

2.2 Generate signature

To obtain bear and secret, refer to 1 Obtaining API Key

The specific rules are as follows:

  1. Splice secret, timestamp, nonce and request path
  2. md5 encryption and conversion to uppercase
$sign = strtoupper(md5($secret+$timestamp+$nonce+$path));

2.3 Call example

curl --location --request POST 'https://openapi.tradplusad.com/api/seat/store?sign=5DE008C88087D8556D276A9E5B8E37E6&timestamp=1629525680&nonce=5c672d4e9628d0a7' \
--header 'bear: 157E4A5D-3877-1236-DE06-457FT3F70C4' \
--form 'adseat_list[0][app_uuid]="BA04D9C5A5E736CCDA8003BC5D936BE5"' \
--form 'adseat_list[0][seat_name]="test created"' \
--form 'adseat_list[0][ad_type]="5"' \
--form 'adseat_list[0][adseat_uuid]=""'

2.4 Return parameters

Returns JSON format

2.4.1 Success

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"adseat_uuid": "8629EE09A4E3C6B60AEC48FA7D6CA4D4",
"seat_name": "test created",
"error_message": ""
}
]
}
}

2.4.2 Failure

{
"code": 403,
"status": -1,
"error_message":"sign error"
}

3 Report

3.1 Submit third-party advertising platform report data

Request path: /api/report/submit

Request Parameters:

FieldTypeRequiredDescriptionRemarks
report_data_listArrayYA maximum of 10 items will be discarded.
report_data_list.dayStringYDate, only supports Y-m-d format Example: 2021-02-01
report_data_list.isoStringYTwo-letter country code (ISO) Example: GE See: 8.1
report_data_list.adsource_idIntYtradplus advertising platform ID See: 8.2
report_data_list.placement_idStringYThird-party advertising platform advertising space ID Mintegral needs to use "_" to splice AD ​​Unit ID
Unity_Ads needs to splice Game ID
Applovin needs to splice SDK Key
Kidoz needs to splice the application's package name package_name
ReklamUp needs to splice the application's package name package_name
Example: placementID_adUnitID
report_data_list.currencyStringNCurrency unit: CNY or USD, default CNY if not passed 
report_data_list.bidding_requestIntNbid request Default 0
report_data_list.bidding_responseIntNbid responseDefault 0
report_data_list.requestIntNrequestDefault 0
report_data_list.fillIntNfillDefault 0
report_data_list.impressionIntNimpressionsDefault 0
report_data_list.clickIntNClickDefault 0
report_data_list.incomeFloatNincomeDefault 0

Return fields:

FieldTypeRequiredDescription
errorArrayYError message list
error.messageStringNerror message
error.report_dataArrayNError message details (same as request data)

Return example:

{
"code": 200,
"status": 0,
"data": {
"error": [
{
"message": "Two-letter country code (ISO) is missing or wrong",
"report_data": {
"day": "2022-01-18",
"iso": "USA",
"adsource_id": "16",
"placement_id": "abc123",
"currency": "CNY",
"income": "50",
"fill": "800"
}
},
{
"message": "Advertising network ID is missing or wrong",
"report_data": {
"day": "2022-01-19",
"iso": "CN",
"adsource_id": "475",
"placement_id": "22",
"currency": "CNY",
"income": "20",
"fill": "600",
"impression": "100"
}
}
]
}
}

4 Application Management

4.1 Get application classification

Request path: /api/app/allcategory

Request Parameters: None

Return fields:

FieldTypeRequiredDescription
first_categoryArrayYFirst level classification
first_category.idStringYCategory id
first_category.name_cnStringYChinese name
first_category.name_enStringYEnglish name
sub_categoryArrayYSecondary classification
sub_category.idStringYSecondary classification id
sub_category.pidStringYThe corresponding first-level classification id
sub_category.name_cnStringYChinese name
sub_category.name_enStringYEnglish name

Return example:

{
"code": 200,
"status": 0,
"data": {
"first_category": [
{
"id": "1",
"name_cn": "Game",
"name_en": "Game"
},
{
"id": "2",
"name_cn": "Application",
"name_en": "App"
}
],
"sub_category": [
{
"id": "101",
"name_cn": "action",
"name_en": "Action",
"pid": "1"
},
{
"id": "102",
"name_cn": "Adventure",
"name_en": "Adventure",
"pid": "1"
}
...
]
}
}

4.2 Get the application

Request path: /api/app/apps

Request Parameters:

If app_uuids are passed, page will be ignored. Has_more and total will only be returned if app_uuids are not passed

FieldTypeRequiredDescriptionRemarks
app_uuidsStirngNApplication IDMaximum of 100 accepted at a time
pageIntNNumber of pages Default 1 100 items per page

Return fields:

FieldTypeRequiredDescriptionRemarks
totalIntNtotal
has_moreIntNis there more
app_listArrayYApplication information
app_list.app_uuidStringYDeveloper application ID
app_list.app_nameStringYApplication name
app_list.category_idIntYSecondary classification
app_list.app_urlStringYApp store link
app_list.package_nameStringYApplication package name
app_list.osIntYApplication platform1:Android 2:iOS
app_list.is_releaseIntYIs it on the shelves?1: Not on the shelves 2: Already on the shelves

Request Example

curl --location --request POST 'https://openapi.tradplusad.com/api/app/apps?sign=5DE008C88087D8556D276A9E5B8E37E6&timestamp=1629525680&nonce=5c672d4e9628d0a7' \
--header 'bear: 157E4A5D-3877-1236-DE06-457FT3F70C4' \
--header 'Content-Type: application/json' \
--data '{"app_uuids":"348FA2C4CFA91471D09DC529EAB1459E","page":1}'

Return to sample:

{
"code": 200,
"status": 0,
"data": {
"has_more": 0,
"total": 25,
"app_list": [
{
"app_uuid": "A741926221D7FEFBCB179D08B4477713",
"app_name": "test1",
"os": 1,
"is_release": 2,
"package_name": "com.test1",
"app_url": "http://www.test1.com",
"category_id": 102
},
{
"app_uuid": "4F1E43B002376A505FFFB03F04C170E5",
"app_name": "test2",
"os": 1,
"is_release": 2,
"package_name": "com.test.4iphone",
"app_url": "http://www.test2.com",
"category_id": 111
},
...
]
}
}

4.3 Create and edit applications

Request path: /api/app/store

Request Parameters:

FieldTypeRequiredDescriptionRemarks
app_listArrayYapp informationMaximum of 10 at a time, any more will be discarded
app_list.app_uuidStringNDeveloper application ID Editor must pass
app_list.app_nameStringNApplication name Editor must pass
app_list.osIntNApplication platform 1: Android 2: iOS Cannot be edited after creation
app_list.package_nameStringNApplication package name Create must pass
app_list.app_urlStringNApp store link Note: only available for ios.
If it is passed, it means that the application has been put on the shelves, and the listed app information will be automatically used.
So app_name and package_name do not need to be passed at this time.
If passed, they will be overwritten.
app_list.category_idIntNClassification reference 3.1 Get application classification Create must pass
app_list.directionIntNscreen orientation 1-vertical screen 2-horizontal screen 0-adaptive

Return fields:

FieldTypeRequiredDescription
listArrayYApplication information
list.app_uuidStirngNDeveloper application ID
list.app_nameStirngNApplication name
list.error_messageStirngNError message, empty character indicates success

Request Example

curl --location --request POST 'https://openapi.tradplusad.com/api/app/store?sign=5DE008C88087D8556D276A9E5B8E37E6&timestamp=1629525680&nonce=5c672d4e9628d0a7' \
--header 'bear: 157E4A5D-3877-1236-DE06-457FT3F70C4' \
--header 'Content-Type: application/json' \
--data '{"app_list":[{"app_uuid":"","app_name":"API\u5e94\u7528","os":1,"package_name":"api","app_url":"","category_id":101,"direction":1}]}'

Return to sample:

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"app_uuid": "",
"app_name": "a1",
"error_message": "Application name already exists"
},
{
"app_uuid": "A741926221D7FEFBCB179D08B4477713",
"app_name": "test1",
"error_message": ""
}
]
}
}

5 Advertising space management

5.1 Obtain advertising space

Request path: /api/seat/seats

Request Parameters:

FieldTypeRequiredDescriptionRemarks
app_uuidStirngNA single application ID can obtain all advertising slots under an applicationapp_uuid and adseat_uuid are mutually exclusive. Pass only app_uuid.
adseat_uuidsStringNAdvertising slot ID, multiple commas separated, return up to 100 
pageStringNNumber of pages Default 1  100 items per page

Return fields:

FieldTypeRequiredDescriptionRemarks
has_moreIntN
totalIntN
adseat_listArrayY
adseat_list.app_uuidStringYDeveloper application ID
adseat_list.seat_nameStringYAdvertising slot name
adseat_list.adseat_uuidStringYAdvertising slot ID
adseat_list.cache_numIntYNumber of parallel requests
adseat_list.ad_typeIntYAd types:
1 Native
2 Interstitial
3 Splash
4 Banner
5 Rewarded video
adseat_list.use_frequencyIntYWhether to set the display frequency online: 1 Yes 0 No
adseat_list.frequency_limitIntYImpression limit 
adseat_list.frequency_unit_countIntYunit interval
adseat_list.frequency_unitIntYTimes unit: 1 minute 2 hours 3 dayseg:
Every 5(frequency_unit_count)
minutes (frequency_unit)
Display 10 times (frequency_limit)
adseat_list.ad_type_templateIntNNative template type Standard Native: 1
Native Banner: 2
Draw information flow: 3
Native splash: 4
Native type return
adseat_list.refresh_timeIntNRefresh timenative Banner, Banner return
adseat_list.skip_timeIntNShow skip button after n secondsSplash, the native splash type returns
adseat_list.countdown_timeIntNTotal countdown timeSplash, the native splash type returns
adseat_list.is_skipIntNWhether it can be skippedSplash, return the native splash character type
adseat_list.monetary_nameStringNBonus itemsIncentive video type returns
adseat_list.monetaryIntNNumber of rewardsIncentive video type returns

Request Example

curl --location --request POST 'https://openapi.tradplusad.com/api/seat/seats?sign=5DE008C88087D8556D276A9E5B8E37E6&timestamp=1629525680&nonce=5c672d4e9628d0a7' \
--header 'bear: 157E4A5D-3877-1236-DE06-457FT3F70C4' \
--header 'Content-Type: application/json' \
--data '{"app_uuid":"348FA2C4CFA91471D09DC529EAB1459E", "adseat_uuids":"","page":1}'

Return to sample:

{
"code": 200,
"status": 0,
"data": {
"has_more": 0,
"total": 58,
"adseat_list": [
{
"app_uuid": "A741926221D7FEFBCB179D08B4477713",
"seat_name": "cp1",
"adseat_uuid": "E1FF0FF0BFF1EBDB61C0FED50E66229D",
"ad_type": 2,
"cache_num": 2,
"use_frequency": 0,
"frequency_limit": 0,
"frequency_unit_count": 0,
"frequency_unit": 0
},
{
"app_uuid": "1BCEFCAD3011A276134CC6225E724064",
"seat_name": "bzys",
"adseat_uuid": "D202406D331F32A5BBD1231065BAD7A0",
"ad_type": 1,
"cache_num": 2,
"use_frequency": 0,
"frequency_limit": 0,
"frequency_unit_count": 0,
"frequency_unit": 0,
"ad_type_template": 1
},
...
]
}
}

5.2 Create and edit advertising slots

Request path: /api/seat/store

Request Parameters:

FieldTypeRequiredDescriptionRemarks
adseat_listArrayYA maximum of 10 items will be discarded.
adseat_list.app_uuidStringYDeveloper application IDDeveloper application ID, which cannot be edited after creation.
adseat_list.seat_nameStringYAdvertising slot name must be passed when creating
adseat_list.adseat_uuidStringNAdvertising slot ID must be passed by editors
adseat_list.cache_numIntNNumber of advertising parallel requests, default 2Create a must-pass splash range: 15 Other ranges: 120
adseat_list.ad_typeIntYAd types:
1 Native
2 Interstitial
3 Splash
4 Banner
5 Rewarded video
Ad type must be passed when created and cannot be edited after creation.
adseat_list.use_frequencyIntNWhether to set the display frequency online: Default: No1 yes 0 no
adseat_list.frequency_limitIntNThe maximum number of impressions is n impressions, default 1 
adseat_list.frequency_unit_countIntNUnit interval, default 1 
adseat_list.frequency_unitIntNUnit of times, minutes: 1 hour: 2 days: 3 Default 1
adseat_list.ad_type_templateIntN1 Standard Native
2 Native Banner
3 Draw information flow
4 Native splicing splash
It must be passed when creating a native type and cannot be edited after creation.
adseat_list.refresh_timeIntNAutomatic refresh, range: 15~150 secondsOnly effective for Banners and native Banners
You can not pass it, which means it will not be refreshed.
adseat_list.skip_timeIntNDisplay skip button after n seconds
Range: 0~10 seconds Default is 2
It must be passed when creating a splash and a native splash. It only takes effect for the splash and native opening screens.
adseat_list.countdown_timeIntNTotal countdown time
Range: 3~10 seconds, default 5
Required when creating splash and native opening screen
Only effective for opening screen and native opening screen
The total countdown time must be greater than skip_time
adseat_list.is_skipIntNWhether it can be skipped, 1 yes 0 no, the default is yesIt must be passed when creating a splash and a native splash. It only takes effect for the splash and native opening screens.
adseat_list.monetary_nameStringNBonus itemsOnly works for rewarded videos
adseat_list.monetaryIntNNumber of rewardsOnly works for rewarded videos

Return fields:

FieldTypeRequiredDescriptionRemarks
listArrayY
list.adseat_uuidStringY
list.seat_nameStringY
list.error_messageStringYError message, empty character indicates success

Request Example

curl --location --request POST 'https://openapi.tradplusad.com/api/seat/store?sign=5DE008C88087D8556D276A9E5B8E37E6&timestamp=1629525680&nonce=5c672d4e9628d0a7' \
--header 'bear: 157E4A5D-3877-1236-DE06-457FT3F70C4' \
--header 'Content-Type: application/json' \
--data '{"adseat_list":[{"app_uuid":"BA04D9C5A5E736CCDA8003BC5D936BE5","seat_name":"API\u521b\u5efa","ad_type":"5","adseat_uuid":""}]}'

Return to sample:

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"adseat_uuid": "9D0A151A3B9169369CB75873FD86713E",
"seat_name": "test native Banner",
"error_message": ""
},
{
"adseat_uuid": "",
"seat_name": "",
"error_message": "Application ID required"
}
]
}
}

6 Mediation group management

6.1 Query the list of intermediary groups

Request path: /api/intermediary/group_list

Request Parameters:

FieldTypeRequiredDescription
currencyStringYCurrency unit, USD or CNY
adseat_uuidStringYAdvertising slot uuid

Return fields:

FieldTypeRequiredDescription
abtest_nameStringYAB test group name
bucket_idStringYAB group id
group_idStringYMediation group id
group_nameStringYMediation group name
bidding_adsource_cache_numStringYBidding advertising source reservation number
bidding_floor_priceStringYBidding base price
cache_numStringYNumber of parallel requests
is_presetStringYWhether to preset the mediation group 1-Yes 0-No
is_cold_sceneStringYWhether to cold start 1-yes 0-no
countryStringYcountry region
cityStringYCity
rule_jsonStringYTraffic grouping rules
segment_tagStringYCustom user properties
statusStringYStatus 1-on 2-off
preset_countryStringYPreset intermediary group countries

Request Example

curl --location 'https://openapi.tradplusad.com/api/intermediary/group_list' \
--header 'bear: EEB82554-BD76-1474-EB7E-3785B5107872' \
--header 'Content-Type: application/json' \
--data '{"currency": "USD","adseat_uuid": "15974C36532C36C820D5B9AAEC21EB12"}'

Return to sample:

{
"code": 200,
"status": 0,
"data": [
{
"group_id": "56646",
"group_name": "custom",
"bucket_id": "8094",
"bidding_adsource_cache_num": "2",
"bidding_floor_price": "0",
"cache_num": "2",
"is_preset": "0",
"is_cold_scene": "0",
"country": "",
"city": "",
"rule_json": "{}",
"segment_tag": "",
"status": "1",
"preset_country": "",
"abtest_name": "Control group"
},
{
"group_id": "0",
"group_name": "All countries",
"bucket_id": "8094",
"bidding_adsource_cache_num": "2",
"bidding_floor_price": "0",
"cache_num": "2",
"is_preset": "0",
"is_cold_scene": "0",
"country": "",
"city": "",
"rule_json": "{}",
"segment_tag": "",
"status": "1",
"preset_country": "",
"abtest_name": "Control group"
},
{
"group_id": "56647",
"group_name": "custom",
"bucket_id": "8095",
"bidding_adsource_cache_num": "2",
"bidding_floor_price": "0",
"cache_num": "2",
"is_preset": "0",
"is_cold_scene": "0",
"country": "",
"city": "",
"rule_json": "{}",
"segment_tag": "",
"status": "1",
"preset_country": "",
"abtest_name": "Experimental group 1"
},
{
"group_id": "0",
"group_name": "All countries",
"bucket_id": "8095",
"bidding_adsource_cache_num": "2",
"bidding_floor_price": "0",
"cache_num": "2",
"is_preset": "0",
"is_cold_scene": "0",
"country": "",
"city": "",
"rule_json": "{}",
"segment_tag": "",
"status": "1",
"preset_country": "",
"abtest_name": "Experimental group 1"
}
]
}

6.2 Create and edit mediation groups

Request path: /api/intermediary/store

Request Parameters:

FieldTypeRequiredDescriptionRemarks
currencyStringYCurrency unit, USD or CNY
group_listArrayYMediation group listA maximum of 10 items will be discarded.
group_list.group_idintNMediation group IDRequired for editing. If 0 is passed in, the default group will be updated.
group_list.group_nameStringYMediation group name
group_list.adseat_uuidStringYAdvertising slot ID
group_list.bucket_idIntYAB group idEditing is not supported
group_list.is_presetIntYPreset mediation group1-Yes 0-No, editing is not supported
group_list.is_cold_sceneIntYcold start1 Yes 0 No, only splash is supported, editing is not supported
group_list.bidding_floor_pricefloatNBidding base price 
group_list.cache_numIntYNumber of parallel requests The upper limit is 20
group_list.bidding_adsource_cache_numIntYBidding advertising source reservation number-1 means no limit, the upper limit of the limit is 20
group_list.countryIntNCountry/RegionNational ISO code, multiple selections separated by English commas, refer to 8.1
group_list.cityIntNProvince and cityProvince and city ID, multiple selections separated by commas, refer to 8.2
group_list.segment_tagIntNDeveloper-defined Segment TagMultiple Segment Tags separated by English commas
group_list.preset_countryStringNPreset intermediary group countriesNational ISO code, multiple selections separated by English commas
group_list.placement_idsStringNAdvertising source IDMultiple selections separated by commas
group_list.rule_jsonStringNTraffic grouping rulesjson format refer to Appendix 3

Return fields:

FieldTypeRequiredDescriptionRemarks
listArrayY
list.group_idStringY
list.group_nameStringY
list.error_messageStringYError message, empty character indicates success

Request Example

curl --location 'https://openapi.tradplusad.com/api/intermediary/store' \
--header 'bear: EEB82554-BD76-1474-EB7E-3785B5107872' \
--header 'Content-Type: application/json' \
--data '{"currency": "USD","group_list": [{"group_id":56657,"group_name":"custom","adseat_uuid":"8C321665C992CDDBE6F5892409A67612","bucket_id":0,"is_pres et":0,"is_cold_scene":0,"bidding_floor_price":1,"cache_num":0,"country":"US,JP","city":"","bidding_adsource_ca che_num":-1,"segment_tag":"","rule_json":"{\"rules\":[{\"name\":\"app_ver\",\"type\":\"version\",\"op\":\"in\ ",\"data\":[\"1\",\"2\"]}],\"timezoneOffset\":\"0\"}","placement_ids":"653046","preset_country":"AM,DE,SG"}]}'

Return to sample:

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"group_id": "",
"group_name": "",
"error_message": ""
}
]
}
}

6.3 Query the advertising source list of the mediation group

Request path: /api/intermediary/group_placements

Request Parameters:

FieldTypeRequiredDescription
currencyStringYCurrency unit, USD or CNY
adseat_uuidStringYAdvertising slot uuid
bucket_idIntNAB group id
group_idIntNMediation group id

Return fields:

FieldTypeRequiredDescription
adseat_uuidStringY
bucket_idStringYAB group id
group_idStringYMediation group id
placement_listArrayYMediation group ad source list
placement_list.bucket_idObjYAB group id
placement_list.bucket_id.group_idObjYMediation group id
placement_list.bucket_id.group_id.header_bidding_listArrayNHeaderBidding area
placement_list.bucket_id.group_id.auto_optimization_listArrayNSort regions by price
placement_list.bucket_id.group_id.manual_sorting_listArrayNManual programming area
placement_list.bucket_id.group_id.low_priority_listArrayNlow priority area
placement_list.bucket_id.group_id.closed_listArrayNSource closed in mediation group
Corresponding list content:
idStringYMediation group ad source id
statusStringYMediation group ad source status 1 on 0 off
adsource_idStringYad network id
group_idStringYMediation group id
group_nameStringYMediation group name
bucket_idStringYAB group id array
bucket_nameStringYAB group name
is_header_biddingStringYWhether to enable Header Bidding 1 Yes 0 No
is_auto_priceStringYWhether to turn on automatic price 1 on 2 off
ecpm_forcastStringYforecastecpm
rateStringYsort price
bid_floorStringYbid bottom price
fequency_capping_dayStringYFrequency configuration, display limit (daily)
frequency_capping_hourStringYFrequency configuration, display limit (hourly)
fequency_capping_minStringYFrequency configuration, display limit (per minute)
sdk_request_timeoutStringYSDK request ad timeout duration
request_interval_statusStringYRequest interval control, 1 on, 2 off
request_no_fill_numStringYRequest interval control, no filling times in a row
request_intervalStringYRequest interval control, request interval, unit seconds
auto_optimizationStringYSorting area 1 Sort by price 2 Sort manually 3 Low priority

Return example:

{
"code": 200,
"status": 0,
"data": {
"adseat_uuid": "08056F3650B0B65B79714A1482FE5EEE",
"group_id": "",
"bucket_id": "",
"placement_list": {
"0": {
"0": {
"auto_optimization_list": {
"0": {
"id": "157751",
"status": "1",
"adsource_id": "16",
"group_id": "0",
"group_name": "Default group",
"bucket_id": "0",
"bucket_name": "",
"is_header_bidding": "0",
"is_auto_price": "1",
"ecpm_forcast": "",
"rate": "3",
"fequency_capping_day": "",
"frequency_capping_hour": "",
"fequency_capping_min": "",
"sdk_request_timeout": "10",
"request_interval_status": "",
"request_no_fill_num": "",
"request_interval": "",
"auto_optimization": "1"
}
}
},
"2396": {
"auto_optimization_list": {
"0": {
"id": "157801",
"status": "1",
"adsource_id": "16",
"group_id": "2396",
"group_name": "cn group",
"bucket_id": "0",
"bucket_name": "",
"is_header_bidding": "0",
"is_auto_price": "1",
"ecpm_forcast": "",
"rate": "3",
"fequency_capping_day": "2",
"frequency_capping_hour": "1",
"fequency_capping_min": "3",
"sdk_request_timeout": "10",
"request_interval_status": "1",
"request_no_fill_num": "3",
"request_interval": "180",
"auto_optimization": "1"
}
}
}
}
}
}
}

6.4 Batch modify the properties of advertising sources in the mediation group (need to enable new AB test permission)

Request path: /api/intermediary/update_group_placement

Request Parameters:

FieldTypeRequiredDescriptionRemarks
currencyStringYCurrency unit CNY or USD
placement_listArrayYMediation group ad source arrayUp to 10 at a time
placement_list.idIntYMediation group ad source id
placement_list.sdk_request_timeoutIntNSDK request ad timeout duration
placement_list.fequency_capping_dayIntNFrequency configuration, display limit (daily)
placement_list.frequency_capping_hourIntNFrequency configuration, display limit (hourly)
placement_list.fequency_capping_minIntNFrequency configuration, display limit (per minute)
placement_list.request_interval_statusIntNRequest interval control 1 on 2 off
placement_list.request_no_fill_numIntNRequest interval control Number of consecutive no fillings
placement_list.request_intervalIntNRequest interval control. Find the interval in seconds.
placement_list.is_auto_priceIntNWhether to turn on automatic price 1 on 2 off
placement_list.rateIntNSorting price optional range 0.01 - 10000

Return fields:

FieldTypeRequiredDescription
dataArrayY
data.placement_idIntYMediation group ad source id
data.error_messageStringYerror message

Return example:

{
"code": 200,
"status": 0,
"data": [
{
"placement_id": 157651,
"error_message": ""
},
{
"placement_id": 157652,
"error_message": ""
},
{
"placement_id": 122,
"error_message": "Ad source error"
}
]
}

6.5 Turn on or off the mediation group ad source

Request path: /api/intermediary/on_off_placement

Request Parameters:

FieldTypeRequiredDescriptionRemarks
statusIntYStatus 1 enabled 0 disabled
placement_id_listArrayYMediation group advertising source id arrayUp to 10 at a time
placement_id_list.idIntYMediation group ad source id

Return fields:

FieldTypeRequiredDescription
dataArrayY
data.placement_idIntYMediation group ad source id
data.error_messageStringYerror message

Return example:

{
"code": 200,
"status": 0,
"data": [
{
"placement_id": 157651,
"error_message": ""
},
{
"placement_id": 157652,
"error_message": ""
},
{
"placement_id": 122,
"error_message": "Ad source error"
}
]
}

7 Advertising source management

7.1 Query advertising network authorization information

Request path: /api/PlacementApiToken/api_tokens

Request Parameters: None

Return fields:

FieldTypeRequiredDescription
dataArrayY
data.api_token_idIntYNetwork authorization id
data.account_nameStringYAccount name
data.adsource_idIntYad network id
data.is_openIntYWhether to activate 1 Yes 0 No

Return example:

{
"code": 200,
"status": 0,
"data": [
{
"id": 1466,
"account_name": "Default account",
"adsource_id": 17,
"is_open": 0
},
{
"id": 2796,
"account_name": "Default account",
"adsource_id": 43,
"is_open": 0
}
]
}

7.2 Query advertising source information

Request path: /api/placement/placements

Request Parameters:

FieldTypeRequiredDescriptionRemarks
currencyStringYCurrency unit CNY or USD
placement_idsStringNAdvertising source idComma separated, up to 100
adsource_idsStringNad network idComma separated
app_uuidsStringNapplication idComma separated, up to 100
adseat_uuidsStringNAdvertising slot idComma separated, up to 100
fieldsStringNFields that need to be returnedDefault all
pageIntNNumber of pages Default 1100 items per page
is_onIntNFilter ad source enabled status: Default 10 returns only closed; 1 returns only enabled; -1 returns enabled + closed (all); when not passed or empty, the behavior is consistent with history, and the default is only enabled

Return fields:

FieldTypeRequiredDescription
has_moreIntYIs there more 1 Yes 0 No
placementsArrayY
placements.placement_idStringAdvertising source id
placements.nameStringAd source name
placements.adsource_idStringad network id
placements.is_header_biddingStringWhether to enable Header Bidding
placements.placement_configJsonAdvertising space parameter configurationdemo:
{"appId":"5175107","placementId":"946159096","adsource_type": "1"}
placements.api_token_idStringAuthorization id
placements.account_nameStringAuthorized account name
placements.app_uuidStringApplication ID
placements.app_nameStringApplication name
placements.osStringApplication system 1 Android 2 ios
placements.adseat_uuidStringAdvertising slot uuid
placements.seat_nameStringAdvertising slot name
placements.ad_typeStringAdvertising slot type
placements.intermediary_groupArrayMediation group advertising source information reference 6.1

Return example:

{
"code": 200,
"status": 0,
"data": {
"placements": [
{
"placement_id": "23399",
"name": "Pangle(cn)_int_1",
"adsource_id": "17",
"is_header_bidding": "0",
"placement_config": {
"appId": "5175107",
"placementId": "946159096",
"adsource_type": "1",
"app_download_setup": "0",
"popconfirm": "0",
"is_template_rendering": "1"
},
"api_token_id": "1466",
"account_name": "Default account",
"app_uuid": "6B5AE472641DB544632AE2E84F952658",
"app_name": "Stickman Brawl",
"os": "1",
"adseat_uuid": "6ECF7327CD62D9BAC9965FC57CC27249",
"seat_name": "Interstitial Advertisement",
"ad_type": "2",
"currency": "USD",
"intermediary_gorup": [
{
"id": "33489",
"status": "1",
"group_id": "0",
"group_name": "Default group",
"bucket_id": "0",
"bucket_name": "",
"is_auto_price": "1",
"ecpm_forcast": "",
"rate": "0",
"fequency_capping_day": "",
"frequency_capping_hour": "",
"fequency_capping_min": "",
"sdk_request_timeout": "60",
"auto_optimization": "1",
"sort": "0"
}
]
}
],
"has_more": 0
}
}

7.3 Create and edit advertising source information (need to enable new AB test permission)

Supports creation and editing of ad sources: Reference Appendix 2

Request path: /api/placement/store

Request Parameters:

1 Create ad source

FieldTypeRequiredDescriptionRemarks
currencyStringYCurrency unit CNY or USD
placement_listArrayYAd source configurationUp to 10 at a time
placement_list.nameStringYAd source nameDuplication is not allowed in the same ad slot
placement_list.api_token_idIntYNetwork authorization idReference 7.1
placement_list.adsource_idIntYad network idReference 8.2
placement_list.adseat_uuidStringYAdvertising slot uuidAdvertising sources supported by ad slot types, please refer to Appendix 2
placement_list.is_header_biddingIntNWhether to enable Header Bidding1 Yes, 0 No Refer to Appendix 1
placement_list.is_auto_priceIntNWhether to turn on automatic price1 is on, 2 is off, non-Header Bidding is required.
placement_list.rateFloatNsort priceAssociated currency, required for non-Header Bidding, and must be greater than 0.01 and less than 10000
placement_list.placement_configJsonYAdvertising source parameter configurationReference Appendix 2
placement_list.is_nativeIntNAdvertising support type1 Native 0 Normal; only for Banner ad slots, splash ad slots, and interstitial ad slots (Banner ad slots add Banner ads is_native=0; support adding native Banner ads is_native=1; the same applies to splash/interstitial. For parameter configuration of different advertising sources, please refer to Appendix 2)
placement_list.is_bottomIntNCovert advertising1 Yes 0 No; this field is invalid when Header Bidding is turned on
placement_list.is_auto_createIntNWhether to automatically create1-Yes 0-No, currently only supports Meta and Admob
placement_list.auto_app_idstringNAutomatically create the required App IDOnly for Meta and Admob platforms

2 Edit ad source

FieldTypeRequiredDescriptionRemarks
currencyStringYCurrency unit CNY or USD
placement_listArrayYAd source configuration
placement_list.placement_idStringYAdvertising source id
placement_list.nameStringNAd source name
placement_list.api_token_idIntNNetwork authorization idReference 7.1
placement_list.is_auto_priceIntNWhether to turn on automatic priceNon-Header Bidding can be modified, 1 is on, 2 is off
placement_list.rateIntFloatsort priceAssociated currency, non-Header Bidding can be modified
placement_list.placement_configJsonYAdvertising source parameter configurationOnly style configuration can be modified

Return fields:

FieldTypeRequiredDescription
dataArrayY
data.placement_idIntYAdvertising source id
data.nameStringYAd source name
data.placement_configStringYIncoming ad source parameter configuration
data.error_messageStringYError message, no indication of success

Request Example

curl --location --request POST 'https://openapi.tradplusad.com/api/placement/store?sign=5DE008C88087D8556D276A9E5B8E37E6&timestamp=1629525680&nonce=5c672d4e9628d0a7' \
--header 'bear: 157E4A5D-3877-1236-DE06-457FT3F70C4' \
--header 'Content-Type: application/json' \
--data '{"currency":"USD","placement_list":[{"name":"API-1\u521b\u5efa\u5e7f\u544a\u6e90","api_token_id":1640,"adsource_id":16,"adseat_uuid":"42D65EDFC13A93B5B25F70FC57280A97","is_header_bidding":0,"is_auto_price":1,"rate":0.03,"placement_config":"{\"placementId\":\"9499192321\",\"appId\":\"53102791\",\"is_template_rendering\":2,\"video_mute\":1,\"auto_play_video\":1,\"video_max_time\":5}","is_bottom":1,"is_native":1}]}'

Return example:

{
"code": 200,
"status": 0,
"data": [
{
"placement_id": 0,
"name": "test_yky1",
"placement_config": "{ "appId": "zzz", "placementId": "23","video_mute":1 }",
"error_message": "Duplicate ad source name"
}
{
"placement_id": 859455,
"name": "test_yky2",
"placement_config": "{ "appId": "zzz", "placementId": "23","video_mute":1 }",
"error_message": ""
}
]
}

8 A/B Test Management

8.1 A/B test list

Request path: /api/abtest/list

Request Parameters:

FieldTypeRequiredDescriptionRemarks
abtest_idIntNA/B test IDAfter incoming, filter according to the specified A/B test
adseat_uuidStringNAdvertising slot UUIDFilter by ad slot after passing in

Return fields:

FieldTypeRequiredDescription
dataArrayYA/B test list
data[].abtest_idIntYA/B test ID
data[].nameStringYA/B test name
data[].app_uuidStringYApplication UUID
data[].adseat_uuidStringYAdvertising slot UUID
data[].share_adseat_uuidStringYShared ad slot UUID
data[].statusIntYA/B test status 0-To be started manually 1-To be started at specified time 2-In progress 3-Ended
data[].group_idString/IntYGroup ID
data[].ab_typeIntYA/B test type (1 advertising position A/B test, 2 intermediary group A/B test)
data[].start_timeIntYstart time (timestamp)
data[].end_timeIntYend time (timestamp)
data[].is_systemIntYIs it smart hosting?
data[].reverseIntYWhether the user reverses the offload (0/1)
data[].auto_handIntYWhether to take effect manually (0/1)
data[].available_timeIntYPlan effective time (timestamp)
data[].available_time_zoneStringYEffective time zone
data[].descriptionStringYRemark
data[].is_bind_share_adseatIntYWhether to bind shared advertising slots (0/1)
data[].bucketsArrayYgrouped list
data[].buckets[].idIntYGroup ID
data[].buckets[].nameStringYGroup name
data[].buckets[].percentString/IntYDiversion ratio
data[].buckets[].weightIntYweight
data[].buckets[].ab_statusIntYGroup status 1-Open 2-Pause 3-End
data[].buckets[].is_winIntYWhether to win the group (0/1) 1-winning group
data[].buckets[].bucket_group_idIntYgroup number
data[].buckets[].is_share_bucketStringYWhether the group uses shared advertising slots (0/1) 1 means use

Request Example

curl--location'http://openapi.tradplusad.com/api/abtest/list?sign=A33B4508815081F9D41D96E96F7B297E&timestamp=1666261328&nonce=5c672d4e9628d0a7'
--header'bear: EEB82554-BD76-1474-EB7E-3785B5107872'
--header'Content-Type: application/json'
--data'{"adseat_uuid":"E6379DA920E44F5DC13A06FCBE09E212"}'

Return to sample

{
"code": 200,
"status": 0,
"data": [
{
"name": "ABTest_Modify_20260312",
"status": "2",
"group_id": "0",
"ab_type": "1",
"start_time": "1773395668",
"end_time": "0",
"is_system": "0",
"reverse": "0",
"auto_hand": "1",
"available_time": "0",
"available_time_zone": "8",
"description": "modify by openapi11",
"is_bind_share_adseat": "1",
"abtest_id": "3203",
"app_uuid": "8EFC6E4C26E961B3C68C274CE4862511",
"adseat_uuid": "E6379DA920E44F5DC13A06FCBE09E212",
"share_adseat_uuid": "797A392C56327B804E3547DD76E29812",
"buckets": [
{
"id": "8417",
"name": "Group C-Add-Update",
"percent": "1",
"weight": "1",
"ab_status": "2",
"is_win": "0",
"bucket_group_id": "3",
"is_share_bucket": "0"
},
{
"id": "8416",
"name": "Group B-Update",
"percent": "45",
"weight": "45",
"ab_status": "1",
"is_win": "0",
"bucket_group_id": "2",
"is_share_bucket": "0"
},
{
"id": "8415",
"name": "Group A-Update",
"percent": "55",
"weight": "55",
"ab_status": "1",
"is_win": "0",
"bucket_group_id": "1",
"is_share_bucket": "1"
}
]
}
]
}

8.2 Creating A/B tests

Request path: /api/abtest/store

Request Parameters:

FieldTypeRequiredDescriptionRemarks
nameStringYA/B test nameMaximum 30 characters
ab_typeIntYA/B testing types1 A/B test for advertising space, 2 A/B test for intermediary group
app_uuidStringYApplication ID
adseat_uuidStringYAdvertising slot IDMust match app_uuid
group_idString/IntNGroup IDRequired when ab_type=2 is passed; 0 indicates all country groups; if not passed, the default is empty
auto_handIntYWhether to take effect manually1 turns on manually, 0 turns on automatically according to time
available_timeStringNEffective timeRequired when auto_hand=0, recommended format: Y-m-d H:i:s
available_time_zoneStringNtime zoneRequired when auto_hand=0, optional: -8, 0, 8
bucketsArrayYA/B group configurationAt least 2 groups
buckets[].nameStringYGroup nameGroup name cannot be repeated
buckets[].percentfloatYDiversion ratioPass value 0~100 according to business rules; Note: The sum of all groups ranges from 99~100 (tolerance 1)
buckets[].weightIntYweight0~100
buckets[].ab_statusIntYGroup statusFixed passing 1 when creating (enabled)
buckets[].copy_group_configIntNWhether to copy the current configuration1 copies the current configuration (recommended); other values ​​do not copy the current configuration (the first group will be forced to 1)
buckets[].is_share_bucketIntNWhether the group uses shared ad slotsIt takes effect when is_bind_share_adseat=1, 1 is used
descriptionStringNRemarkMaximum 100 characters
is_bind_share_adseatIntNWhether to bind shared advertising slots0 no, 1 yes
share_adseat_uuidStringNShared ad slot IDRequired when is_bind_share_adseat=1

Return fields:

FieldTypeRequiredDescription
abtest_idIntYA/B test ID
nameStringYA/B test name

Request Example

curl--location'http://openapi.tradplusad.com/api/abtest/store?sign=A33B4508815081F9D41D96E96F7B297E&timestamp=1666261328&nonce=5c672d4e9628d0a7'
--header'bear: EEB82554-BD76-1474-EB7E-3785B5107872'
--header'Content-Type: application/json'
--data'{"name":"ABTest_API","ab_type":1,"app_uuid":"8EFC6E4C26E961B3C68C274CE4862511","adseat_u uid":"E6379DA920E44F5DC13A06FCBE09E212","group_id":0,"auto_hand":0,"available_time":"2026-03-12 20:00:00","available_time_zone":"8","description":"openapi create abtest","is_bind_share_adseat":0,"share_adseat_uuid":"","buckets":[{"name":"Group A","percent":50,"weight":50,"ab_status":1,"copy_gro up_config":1,"is_share_bucket":0},{"name":"Group B","percent":50,"weight":50,"ab_status":1,"copy_group_config":1,"is_share_bucket":0}] }'

Return to sample

success:
{
"code": 200,
"status": 0,
"data": {
"abtest_id": 12345,
"name": "AB test_insert screen"
}
}
fail:
{
"code": 10002,
"status": 1,
"message": "Parameter error"
}

8.3 Editing A/B tests

Request path: /api/abtest/modify

Request Parameters:

FieldTypeRequiredDescriptionRemarks
abtest_idIntYA/B test ID
nameStringYA/B test nameMaximum 30 characters
reverseIntNWhether the user reverses the traffic0 No, 1 Yes; only supports A/B test ongoing settings
descriptionStringNRemarkMaximum 100 characters
bucketsArrayYA/B group configurationAt least 2 groups
buckets[].idIntNGroup record IDIt must be passed when editing an existing group (obtained from the list interface); it will not be passed when adding a new group.
buckets[].bucket_group_idIntNgroup numberIt must be passed when editing an existing group (obtained from the list interface); it is not passed or 0 is passed when adding a new group.
buckets[].nameStringYGroup nameCannot be empty
buckets[].percentfloatYDiversion ratioPass value 0~100 according to business rules; Note: The sum of all groups ranges from 99~100 (tolerance 1)
buckets[].weightIntYweight0~100
buckets[].ab_statusIntYGroup status1 starts, 2 pauses
buckets[].is_share_bucketIntNWhether the group uses shared ad slotsIt takes effect when is_bind_share_adseat=1, 1 means use; only supports modification when A/B testing is not enabled.
buckets[].copy_group_configIntNWhether to copy the current configurationUse when adding a new group: 1 copies the current configuration (recommended), other values ​​​​do not copy the current configuration

Request Example

curl--location'http://openapi.tradplusad.com/api/abtest/modify?sign=A33B4508815081F9D41D96E96F7B297E&timestamp=1666261328&nonce=5c672d4e9628d0a7'
--header'bear: EEB82554-BD76-1474-EB7E-3785B5107872'
--header'Content-Type: application/json'
--data'{"abtest_id":3203,"name":"ABTest_Modify_20260312","reverse":1,"description":"modify by openapi11","buckets":[{"id":8415,"bucket_group_id":1,"name":"Group A-Update","percent":55,"weight":55,"ab_status":1,"is_share_bucket":1},{"id":8416,"bucket_group_id":2,"name": "Group B-Update","percent":45,"weight":45,"ab_status":1,"is_share_bucket":0},{"name":"Group C-New","percent":1,"weight":1,"ab_status":1,"copy_group_config":1,"is_share_bucket":0}]}'

Return to sample

success:
{
"code": 200,
"status": 0,
"data": {
"abtest_id": 12345,
"name": "ABTest_Modify"
}
}
fail:
{
"code": 10002,
"status": 1,
"message": "Parameter error"
}

8.4 Turn on A/B testing

Request path: /api/abtest/start

Request Parameters:

FieldTypeRequiredDescriptionRemarks
abtest_idIntYA/B test IDOnly A/B tests with "To be manually enabled" status enabled are supported.

Return fields:

FieldTypeRequiredDescription
abtest_idIntYA/B test ID
statusIntYA/B test status (0-to be started manually, 1-to be started at a specified time, 2-in progress, 3-ended)

Request Example

curl--location'http://openapi.tradplusad.com/api/abtest/start?sign=A33B4508815081F9D41D96E96F7B297E&timestamp=1666261328&nonce=5c672d4e9628d0a7'
--header'bear: EEB82554-BD76-1474-EB7E-3785B5107872'
--header'Content-Type: application/json'
--data'{"abtest_id":3203}'

Return to sample

success:
{
"code": 200,
"status": 0,
"data": {
"abtest_id": 3208,
"status": 2
}
}
fail:
{
"code": 1001,
"status": 1,
"message": "Parameter error"
}

8.5 Turn off A/B testing

Request path: /api/abtest/close

Request Parameters:

FieldTypeRequiredDescriptionRemarks
abtest_idIntYA/B test ID
bucket_idIntNWinning group IDRequired when closing the "Active" AB test (used to specify the winning group)
typeIntNclosure type1 normal shutdown, 2 smart hosting shutdown

Return fields:

FieldTypeRequiredDescription
abtest_idIntYA/B test ID
statusIntYA/B test status (0-to be started manually, 1-to be started at a specified time, 2-in progress, 3-ended)

Request Example

curl--location'http://openapi.tradplusad.com/api/abtest/close?sign=A33B4508815081F9D41D96E96F7B297E&timestamp=1666261328&nonce=5c672d4e9628d0a7'
--header'bear: EEB82554-BD76-1474-EB7E-3785B5107872'
--header'Content-Type: application/json'
--data'{"abtest_id":3203,"bucket_id":8431,"type":1}'

Return to sample

success:
{
"code": 200,
"status": 0,
"data": {
"abtest_id": 3208,
"status": 3
}
}
fail:
{
"code": 1001,
"status": 1,
"message": "Parameter error"
}

9 Query general information

9.1 Query country information

Request path: /api/info/region

Request Parameters: None

Return fields:

FieldTypeRequiredDescription
listArrayY
list.nameStringYChinese name
list.name_enStringYEnglish name
list.isoStringYTwo-letter country code (ISO)

Return example:

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"name": "Belgium",
"name_en": "Belgium"
"iso": "BE"
},
{
"name": "Libya",
"name_en": "Libya"
"iso": "LY"
},
...
]
}
}

9.2 Query city information

Request path: /api/info/city

Request Parameters: None

Return fields:

FieldTypeRequiredDescription
listArrayY
list.idStringYid
list.pidStringYsuperior id
list.nameStringYCity

Return example:

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"id": "1",
"pid": "0",
"name": "Beijing"
},
{
"id": "2",
"pid": "0",
"name": "Tianjin City"
},
...
]
}
}

9.3 Advertising network query

Request path: /api/info/adsource_list

Request Parameters: None

Return fields:

FieldTypeRequiredDescription
listArrayY
list.nameStringYAdvertising platform name
list.adsource_idIntYtradplus advertising platform id

Return example:

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"name": "Meta",
"adsource_id": 1
},
{
"name": "Admob",
"adsource_id": 2
},
...
]
}
}

10 Advertising scene

10.1 Query advertising scenes

Request path: /api/AdScene/scenes

Request Parameters:

FieldTypeRequiredDescriptionRemarks
app_uuidStringNapplication uuid
adseat_uuidStringNAdvertising slot ID
pageIntNNumber of pages Default 1100 items per page

Return fields:

FieldTypeRequiredDescription
has_moreIntYIs there more 1 Yes 0 No
totalIntYtotal quantity
adscene_listArrayY
adscene_list.ad_scene_idStringYScene primary key ID
adscene_list.ad_scenes_nameStringscene name
adscene_list.app_uuidStringApplication ID
adscene_list.adseat_uuidStringAdvertising slot ID
adscene_list.uuidStringScene uuidsdk use
adscene_list.is_custom_uidStringWhether to use custom scenes 1 Yes 0 No
adscene_list.statusStringStatus 1 enabled 2 disabled
adscene_list.remarkStringRemark

Return example:

{
"code": 200,
"status": 0,
"data": {
"has_more": 0,
"total": 1,
"adscene_list": [
{
"ad_scene_id": "260",
"ad_scenes_name": "tab",
"app_uuid": "38C0EB39AC0C015903E5CA6CA069AFF7",
"adseat_uuid": "2A7E2D218A488665581A608D7AC9AA6F",
"uuid": "76BE82DBAE98A3",
"is_custom_uid": "0",
"status": "1",
"remark": ""
}
]
}
}

10.2 Create and edit advertising scenes

Request path: /api/AdScene/store

Request Parameters:

FieldTypeRequiredDescriptionRemarks
adscene_listArrayYAdvertising scene information
adscene_list.adseat_uuidStringYAdvertising slot ID
adscene_list.ad_scene_idIntNAdvertising scene primary key idThe editor must pass it on. Corresponds to 9.1 ad_scene_id
adscene_list.ad_scene_nameStringYscene name
adscene_list.statusIntNCreate a must pass. Status 1 enabled 2 disabled
adscene_list.remarkStringNRemark
adscene_list.is_custom_uidIntNCreate a must pass. Whether to use custom scenes 1 Yes 0 No
adscene_list.custom_uidStringNCustom scene uidRequired when choosing to use a custom scenario and cannot be repeated

Return fields:

FieldTypeRequiredDescription
listArrayY
list.adseat_uuidStringNApplication ID
list.ad_scene_nameStringNscene name
list.ad_scene_idIntNscene primary key id
list.error_messageStringNError message, empty character indicates success

Return example:

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"adseat_uuid": "2A7E2D218A488665581A608D7AC9AA6F",
"ad_scene_name": "Reward interface",
"ad_scene_id": 125,
"error_message": ""
},
{
"adseat_uuid": "2A7E2D218A488665581A608D7AC9AA6F",
"ad_scene_name": "Level",
"ad_scene_id": 220,
"error_message": ""
}
]
}
}

Appendix 1 Header Bidding

Advertising slot typeAdvertising source
splashTencent Advertising
Vungle
Mintegral
Inmob
Columbus
Bigo
Yandex
Pangle
motivational videoSigmob (requires permission to be enabled)
Tencent Advertising
Meta
Vungle
Mintegral
Inmobi
YSO
Columbus
Bigo
Yandex
Pangle
Pangolin
table plaqueSigmob (requires permission to be enabled)
Tencent Advertising
Meta
Vungle
Mintegral
Inmobi
YSO
Columbus
Bigo
Yandex
Pangle
Pangolin
BannerTencent Advertising
Meta
Vungle
Mintegral
Inmobi
YSO
Columbus
Bigo
Yandex
Pangle
Pangolin
Standard NativeTencent Advertising
Meta
Vungle
Mintegral
Inmobi
Columbus
Bigo
Yandex
Pangle
Pangolin
native BannerTencent Advertising
Meta
Vungle
Mintegral
Inmobi
Columbus
Bigo
Yandex
Pangle
Pangolin
Draw information flowTencent Advertising
Native splashTencent Advertising
Vungle
Mintegral
Inmobi
Columbus
Bigo
Yandex
Pangle
Pangolin

Appendix 2 Comparison table of configuration of advertising network corresponding advertising slot types

ad network idAd network nameAdvertising space parameter configurationAd typeAdvertising style parameter configurationRemark
1MetaplacementId (Placement ID)motivational videoadsource_type Advertising slot type 1-rewarded video 2-rewarded interstitial
table plaque- noneWhen creating the Reels Ads type, pass 1 to is_native
splash

is_template_rendering template type 2: self-rendering
placement_ad_type ad type 1-native splash 2-interstitial opening

Banner

ad_size ad source size/height
is_template_rendering template type 1: template rendering 2: self-rendering

size:
1: 320 x 50
2: 320 x 90
3: 320 x 250
high:
1:50
2:100
3:120
When is_native=0 [normal Banner], there is no is_template_rendering style
When is_native=1 [native Banner] and is_template_rendering=2, there is no ad_size style

Standard Native

is_template_rendering template type 1: template rendering 2: self-rendering
ad_size ad height
Banner_mrec=4 :MREC(300X250)
Banner_mrec=12: native Banner

high:
1:50
2:100
3:120
When Banner_mrec=4[MREC(300X250)], there is no is_template_rendering style and no ad_size style
When Banner_mrec=12 [native Banner], there is is_template_rendering style and ad_size style
When adding standard native, there is only the is_template_rendering style

native Banner

is_template_rendering template type 1: template rendering 2: self-rendering
ad_size height 1:50 2:100 3:120

2AdMobplacementId (ad unit ID)motivational video

adsource_type ad slot type 1-rewarded video ad 2-interstitial rewarded ad
placement_ad_type advertising type 0-normal rewarded 2-interstitial rewarded

When placement_ad_type=2 [insert screen rewarded], there is no adsource_type style
table plaque- none
Banner

ad_size ad source size
collapsible collapsible Banner 0-default 1-top 2-bottom

1: 320 x 50
2: 320 x 100
3: 300 x 250
4: 468 x 60
5: 780 x 90
6: adaptive Banners
[Normal Banner] When is_native=0 [Normal Banner], there is only ad_size style
[Collapsible Banner] is_native=0, collapsible=1/2
[Native Banner] is_native=1, no collapsible, ad_size style

splashplacement_ad_type advertising type 0-Normal splash 2-Insert splash
Standard Native

ad_size material ratio
Banner_mrec ad type 1-standard native 4-MERC

1: not specified
2: Any size
3: Horizontal screen size
4: Vertical screen size
5: Square size

native Banner- none
5Unity AdsappId (application ID)
placementId (advertising slot ID)
motivational video-
table plaque-
splashNot supported
Standard NativeNot supported
Bannerad_size ad source size

ad_size:
1: 320 x 50
2: 728 x 90

7VungleappId (App ID) placementId (ad placement reference ID)motivational video

video_mute video mute 1 yes 2 no
direction screen direction 1 portrait 2 landscape

IOS application has no direction style;
table plaque

video_mute video mute 1 yes 2 no
direction screen direction 1 portrait 2 landscape

When is_native=0 [normal interstitial], Android applications have a direction style, but IOS applications do not have this style;
Banner

is_template_rendering ad slot type 0-Banner ad 1-medium rectangular Banner ad
ad_size ad source size
placement_ad_type=99 Inline type

ad_size:
1: 320 x 50 (supports Banner/Inline)
2: 300 x 50 (supports Banner/Inline)
3: 728 x 90 (Banner/Inline supported)
4: 300 x 250 (Inline only)
When is_template_rendering=1, there is no ad_size style
When placement_ad_type=99, there is no is_template_rendering style, but there is ad_size style

splash

video_mute video mute 1 yes 2 no
direction screen direction 0 adaptive 1 vertical screen 2 horizontal screen
placement_ad_type 0 Normal splash 1 Native splash 2 Insert splash

When is_native=0 [normal opening], placement_ad_type=0 Android applications only have direction style and the value is only 1, 2, and IOS applications have no style;
When is_native=1[native opening], placement_ad_type=1 no style;
When is_native=0 [interstitial opening], placement_ad_type=2 Android applications only have direction and values ​​​​0, 1, 2, video_mute style, IOS applications only have video_mute style;

Standard Nativeis_template_rendering Ad Type 1-Medium Rectangle Banner 2-Standard Native 3-Inline

When is_template_rendering=3, ad_size style
ad_size:
1: 320 x 50
2: 300 x 50
3: 728 x 90
4: 300 x 250

15ChartboostappSign (App Signature)
appId (App ID)
placementId (Location)
motivational video- none
table plaque- none
Banner

ad_size ad source size

ad_size:
1: 320 x 50
2: 300 x 50
3: 728 x 90

splashNot supported
Standard NativeNot supported
16Tencent AdvertisingappId (Media ID)
placementId (Unit ID)
motivational videovideo_mute video mute 1 yes 2 no
table plaque

full_screen_video Is it full screen? 1 Yes 2 No
video_mute video mute 1 yes 2 no
auto_play_video automatically play video 1 always 2 wifi only
video_max_time video maximum duration limited duration range 5-60

No time limit:
video_max_time -1
Banneris_template_rendering template type 1 Youlianghui rendering
splashzoom_out splash V+ 1 yes 2 no
Standard Native

is_template_rendering 1 Youlianghui rendering 2 Developer’s self-rendering 4 Pre-roll video advertisement (Youlianghui rendering) 5 Pre-roll video advertisement (self-rendering)
video_mute video mute 1 yes 2 no
auto_play_video automatically play video 1 always 2 wifi only 3 manual play
video_max_time video maximum duration limited duration range 5-60

native Banner

is_template_rendering 2 Developer self-rendering 5 Pre-roll video advertisement (self-rendering)
video_mute video mute 1 yes 2 no
auto_play_video automatically play video 1 always 2 wifi only 3 manual play
video_max_time video maximum duration limited duration range 5-60

Draw information flow- none
Native splash

is_template_rendering 2 Developer self-rendering 3 Youlianghui rendering video_mute video mute 1 yes 2 no
auto_play_video automatically play video 1 always 2 wifi only 3 manual play
video_max_time video maximum duration limited duration range 5-60

17pangolinappId (App ID)
placementId (Slot ID)
motivational video

app_download_setup ad slot type, pop-up box to confirm before downloading 0 default 1 specified (Android only)
popconfirm Second pop-up window to confirm 1 yes 2 no (Android only)
is_template_rendering Template type 1 Template rendering (personalized template) 2 Self-rendering

When app_download_setup is 0, popconfirm is invalid (the same below)
table plaque

adsource_type ad slot type, 1 full screen video 2 interstitial ad 3 new interstitial ad
app_download_setup ad slot type, pop-up box to confirm before downloading 0 default 1 specified (Android only)
popconfirm Second pop-up window to confirm 1 yes 2 no (Android only)
is_template_rendering Template type 1 Template rendering (personalized template) 2 Self-rendering
video_orientation video playback direction 1 vertical screen 2 horizontal screen
ad_size_ratio code bit size ratio 1 1:1, 2 3:2,3 2:3

Notice:
1) When adsource_type is 1, there is no ad_size_ratio, video_orientation
2) When adsource_type is 2, is_template_rendering always passes 1, and there is no video_orientation
3) When adsource_type is 3, there is no ad_size_ratio, is_template_rendering
Bannerapp_download_setup ad slot type, pop-up box to confirm before downloading 0 default 1 specified (Android only)
popconfirm Second pop-up window to confirm 1 yes 2 no (Android only)
ad_size 1,2,3,4,5,6,7,8

1: 600 x 300
2: 600 x 400
3: 600 x 500
4: 600 x 260
5: 600 x 90
6: 600 x 150
7: 600 x 100
8: 600 x 388

splash

is_template_rendering Template type 1 Template rendering (personalized template) 2 Self-rendering
zoom_out Open the screen and click on the eyes 1 Yes 2 No
app_download_setup (Android only)
popconfirm (Android only)

Standard Native

is_template_rendering Template type 1 Template rendering (personalized template) 2 Self-rendering 3 Pre-roll video advertisement
app_download_setup popup box to confirm before downloading 0 default 1 specified (Android only)
popconfirm Secondary pop-up window confirmation 1 yes 2 no (Android only)

Draw information flow-
Native splash

is_template_rendering Template type 1 Template rendering (personalized template) 2 Self-rendering
app_download_setup popup box to confirm before downloading 0 default 1 specified (Android only)
popconfirm Secondary pop-up window confirmation 1 yes 2 no (Android only)

18MintegralAppKey (App Key)
appId (App ID)
placementId (Location)
unitId (AD Unit ID)
motivational video

video_mute video mute 1 yes 2 no
placement_ad_type Ad type 0 Normal rewarded 2 Interstitial rewarded

table plaque

video_mute video mute 1 yes 2 no
is_template_rendering template type 2 self-rendering
adsource_type ad slot type 1 full screen video 2 half screen interstitial [native interstitial]

When creating a native interstitial, the adsource_type style is required
Banner

is_template_rendering template type 2 self-rendering
ad_size ad source size [ordinary Banner]
video_mute video mute 1 yes 2 no [native Banner]

ad_size:
1: 320 x 50
2: 300 x 50
3: 728 x 90

splash

is_skipable Whether it can be skipped 1 Yes 2 No [Normal opening]
direction screen direction 1 vertical screen 2 horizontal screen [normal screen]
countdown_time countdown time 2~10 [normal splash]
placement_ad_type ad type 0 normal 1 native splash 2 interstitial opening
video_mute video mute 1 yes 2 no
is_template_rendering Template type 1 automatic rendering 2 custom rendering [native splash]
auto_play_video automatic play 1 always 2-wifi only 3-manual [native splash]
ad_size ad occupies screen height 1:100% 2:80%

When is_native=0 [normal opening], there are only is_skipable, direction, countdown_time, and placement_ad_type styles. If it is the bidding source, that is, when is_header_bidding=1, the ad_size style needs to be passed; when is_native=1 [native opening], there are only placement_ad_type, is_template_rendering, video_mute, and auto_play_video styles. When is_native=0 When placement_ad_type=2 [insert screen and splash], there are only placement_ad_type and video_mute styles

Standard Native

is_template_rendering template type 1 automatic rendering 2 custom rendering
video_mute video mute 1 yes 2 no
auto_play_video autoplay 1 always 2-wifi only 3-manual

When is_template_rendering=2, there is only video_mute style
19PangleappId (App ID)
placementId (Slot ID)
motivational video

is_template_rendering template type 1-template rendering
placement_ad_type advertising type 0-normal rewarded 2-interstitial rewarded
orientation video playback direction 1-vertical screen 2-horizontal screen

When placement_ad_type=0 [Normal rewarded], applicable fields: is_template_rendering, orientation; is_template_rendering value: 1-template rendering; orientation value: 1-vertical screen, 2-horizontal screen;
When placement_ad_type=2【Insert Screen Incentive】, applicable field: orientation; orientation value: 1-vertical screen, 2-horizontal screen; inapplicable field: is_template_rendering

table plaque

accept_material_type creative type 1-image only 2-video only 3-image+video
orientation video playback direction 1-vertical screen 2-horizontal screen
adsource_type ad slot type 1-full screen video 2-half screen interstitial
ad_categories Advertising categories Multiple selection, value: 4/11/12/13

When is_native=0 [normal interstitial], applicable fields: accept_material_type, orientation; inapplicable fields: adsource_type, ad_categories;
When is_native=0 and is_auto_create=1, accept_material_type is required and the value is: 1-picture only, 2-video only, 3-picture+video;
When accept_material_type=2 [video only] or 3 [picture + video], orientation is required, and the value is: 1-vertical screen, 2-horizontal screen; when accept_material_type=1 [picture only], orientation does not need to be passed;
When is_native=1 [native interstitial], applicable fields: adsource_type, ad_categories; adsource_type values: 1-full-screen video, 2-half-screen interstitial; inapplicable fields: accept_material_type, orientation;
When is_native=1 and is_auto_create=1, ad_categories is required and multiple selections are allowed. Values: 4-video, 11-wide image, 12-square image, 13-square video

Banner

is_template_rendering template type 2-self-rendering
ad_size ad source size
slide_Banner whether to rotate 1-no 2-yes
ad_categories Advertising categories Multiple selection, value: 4/11/12/13

ad_size value: 1-640 x 100, 2-600 x 500;
When is_native=0 [normal Banner], applicable fields: ad_size, slide_Banner; inapplicable fields: is_template_rendering, ad_categories;
When is_native=0 and is_auto_create=1, slide_Banner is required, value: 1-no, 2-yes;
When is_native=1 [native Banner], applicable fields: is_template_rendering, ad_categories; is_template_rendering value: 2-self-rendering; inapplicable fields: ad_size, slide_Banner;
When is_native=1 and is_auto_create=1, ad_categories is required and multiple selections are allowed. Values: 4-video, 11-wide image, 12-square image, 13-square video

splash

placement_ad_type advertising type 0-Normal splash 2-Insert splash
orientation video playback direction 1-vertical screen 2-horizontal screen
ad_categories Advertising categories Multiple selection, value: 4/11/12/13

When is_native=0 [normal splash], applicable fields: placement_ad_type, orientation; placement_ad_type value: 0-normal splash, 2-insert splash; inapplicable fields: ad_categories;
When is_native=0 and is_auto_create=1, orientation is required, value: 1-vertical screen, 2-horizontal screen;
When is_native=1 [native splash], applicable fields: ad_categories; inapplicable fields: placement_ad_type, orientation;
When is_native=1 and is_auto_create=1, ad_categories is not required; if filled in, you can select multiple options, the values ​​are: 4-video, 11-wide image, 12-square image, 13-square video

Standard Native

Banner_mrec Advertising slot type 1-standard native 4-Banner/MREC
is_template_rendering template type 2-self-rendering
slide_Banner whether to rotate 1-no 2-yes
ad_categories Advertising categories Multiple selection, value: 4/11/12/13

When Banner_mrec=1 [standard native], applicable fields: is_template_rendering, ad_categories; inapplicable fields: slide_Banner;
When Banner_mrec=1 and is_auto_create=1, is_template_rendering is required, value: 2-self-rendering; ad_categories is required, multiple selections are allowed, value: 4-video, 11-wide image, 12-square image, 13-square video;
When Banner_mrec=4 [Banner/MREC, 600 x 500], applicable fields: slide_Banner; inapplicable fields: is_template_rendering, ad_categories;
When Banner_mrec=4 and is_auto_create=1, slide_Banner is required, value: 1-no, 2-yes

20quick workerappId (application ID)
appName (application name)
placementId (advertising slot ID)
motivational video

direction screen direction 1 portrait 2 landscape 3 adaptive
video_mute video mute 1 yes 2 no

table plaque

adsource_type ad slot type, 1 full-screen video 2 interstitial ads
direction screen direction 1 portrait 2 landscape 3 adaptive
video_mute video mute 1 yes 2 no

Only when adsource_type is 1 full screen video
directionScreen direction optional
splash-
Standard Native

is_template_rendering template type 1 template rendering 2 self-rendering

native Banner

is_template_rendering template type 2 self-rendering

Draw information flow-
Native splash

is_template_rendering template type 1 template rendering 2 self-rendering

21SigmobappId (application ID)
AppKey (App Key)
placementId (ad unit ID)
motivational video
table plaque-
splash-
Standard Native-
native Banner-
Native splash-
23InmobiplacementId (advertising slot ID)motivational videoplacement_ad_type rewarded type 0-normal rewarded 2-interstitial rewarded
table plaqueadsource_type ad style 1-full screen interstitial 2-half screen interstitialWhen is_native=1 [native screen], there is only adsource_type style
splash

placement_ad_type splash type 1-native splash 2-insert splash

Standard NativeBanner_mrec Advertising slot type 1-standard native 4-MREC(300x250)
Bannerad_size ad source sizead_size:
1: 320x50
2: 300x250
When is_native=1 [native Banner], there is no ad_size style
24FyberappId (application ID)
placementId (advertising slot ID)
motivational video-
table plaquevideo_mute video mute 1 yes 2 no
splash

video_mute video mute 1 yes 2 no
placement_ad_type splash type 2-insert splash

Standard NativeNot supported
Banner-
40TradPlus AdxplacementId (advertising slot ID)motivational video

video_mute video mute 1-yes 2-no
adsource_type ad type 1-rewarded advertising 2-interstitial rewarded advertising
skip_time video skip button appearance time (1~30s)

When adsource_type=1, there is no skip_time style
table plaque

video_mute video mute 1-yes 2-no
adsource_type material type 1-interstitial video 2-interstitial picture 3-interstitial picture & interstitial video

When adsource_type=2, there is no video_mute style
splash-
Interruption-
Standard Nativetemplate_render_type template type1-left picture and right text 2-left text and right picture 3-top picture and bottom 4-top and bottom picture 5-three pictures
Banner

ad_size ad source size
width custom width
height custom height

ad_size:
1: Banner(320x50)
2: Large Banner (320x90)
3: Medium distance Banner (300x250)
4: Home page Banner (728x90)
100: Custom
When ad_size=100, width and height styles need to be passed
43Baidu AllianceappId (APP ID)
placementId (Ad Place ID)
motivational video-
table plaqueadsource_type ad slot type, 1 full screen video 3 new template interstitial
Banner

is_native=0 not supported

splash-
Standard Native

is_template_rendering Template type Template type 1 Smart optimization 2 Self-rendering

native Banner

is_template_rendering template type template type 2 self-rendering

Native splash

is_template_rendering Template type Template type 1 Smart optimization 2 Self-rendering

44You can winappId (application ID)
placementId (advertising slot ID)
motivational videovideo_mute video mute 1 yes 2 no
table plaque-
splash-
Standard Native

is_template_rendering template type 2 self-rendering
video_mute video mute 1 yes 2 no

Native splash

is_template_rendering template type 2 self-rendering
video_mute video mute 1 yes 2 no

50YandexplacementId (Ad Unit ID)motivational videoplacement_ad_type rewarded type 0-normal rewarded 2-interstitial rewarded
table plaque

adsource_type ad style 1-full screen video 2-half screen interstitial
is_template_rendering template type 2-self-rendering

When is_native=0 [normal interstitial], there is no style

splashplacement_ad_type splash type 0-normal splash 1-native splash 2-insert splash
Standard Native

is_template_rendering template type 1-template rendering 2-self-rendering

Banner

ad_size ad source size

ad_size:
1: 240 x 40
2: 300 x 250
3: 320 x 100
4: 320 x 50
5: 400 x 240
6: 728 x 90
When is_native=1 [native Banner], there is no style

57BigoappId (application ID)
placementId (advertising slot ID)
motivational videoplacement_ad_type 0-normal rewarded 2-interstitial rewardedWhen creating [Interstitial Incentive], there is only placement_ad_type=2 style
table plaqueadsource_type ad slot type 1-full screen video 2-half screen interstitial

When is_native=0 [normal interstitial], there is no style
When is_native=1 [native interstitial], there is only the adsource_type style

splash

adsource_type ad slot type 1-half screen ad 2-full screen ad
placement_ad_type 0-normal splash 1-native splash 2-insert splash

When is_native=0 [normal opening], there is only adsource_type style
When is_native=1 [native splash], there is only placement_ad_type style
When creating [Insert screen], is_native=0 and only placement_ad_type=2 style

Standard Native-
Banner

ad_size ad source size

ad_size:
1: 320 x 50
2: 300 x 250
When is_native=0 [normal Banner], there is only ad_size style
When is_native=1 [native Banner], there is no style

76ColumbusappKey (App Key) appSecret (App Secret) placementId (Placement ID)motivational video

placement_ad_type rewarded type 0 ordinary rewarded 2 interstitial rewarded

IOS applications do not support creation
table plaque

adsource_type ad style 1 full screen interstitial 2 half screen interstitial

When is_native=0[normal interstitial], there is no adsource_type style
Banner

ad_size ad source size

ad_size:
1: 320 x 50
2: 300 x 250
When is_native=1[native Banner], there is no ad_size style

splash

placement_ad_type 1 Native splash 2 Insert splash

When is_native=1[native splash], placement_ad_type=1
When is_native=0[splash], placement_ad_type=2

Standard Native- none
77YsoplacementId (advertising slot ID)motivational video-
table plaque-
splash-
Standard Native-
Banner-

Appendix 3 Traffic Grouping Rule Data Format

FieldTypeRequiredDescriptionRemarks
rulesArray[Object]YTraffic grouping rule information list
rules.namestringYnameNetwork connection type device_contype
Application version app_ver
Device type device_type
Device manufacturer device_mak
week week
time period time
age user_age
gender user_gender
SDK version sdk_ver
system version device_osv
mobile phone running memory (RAM) device_ram
CPU architecture device_cpu
Level in the game user_level
In-app payment amount user_iap_amount
In-app payment currency user_iap_currency
Number of in-app payments user_iap_count
Channel channel
Sub-channel sub_channel
Customized user ID user_id
Device ID device_idfa
IDFA authorization device_idfa_auth
Segment Tag segment_tag
Application installation time app_instimespan
Custom user attribute user_custom
rules.typestringYtypeint,float,version,complex
rules.opstringYOperatorin, notIn, greater than, less than, greater than or equal to, less than or equal to, =, range
rules.datastringYcontentNetwork connection type WiFi(2),5G(7),4G(6),3G(5),2G(4)
Device type 1-Phone,2-Pad
Device manufacturer Apple,Acer,Advan,Amazon,Asus,Blackshark,Coolpad,GIONEE,Google,Hisense,Honor,HTC,Huawei,Infinix,Lanix,LeEco,Lenovo,LGE,Meitu,Meizu,MetroPC S,Motorola,Nokia,Nubia,OnePlus,OPPO,Qcom,Realme,Redmi,Samsung,Sharp,Smartfren,Smartisan,Sony,TCL,Tecno,Verizon,Vivo,Xiaomi,ZTE,360
Week 1-7 (dynamically generated in the code, corresponding to Monday to Sunday)
Gender male, female
In-app payment currency USD, CNY, EUR
IDFA authorization 1 authorized, 2 unauthorized
timezoneOffsetstringYtime zoneUse a special time zone selection component to automatically obtain the current time zone offset