Documentation

Ads Unified Platform Advertiser API


Ads Unified Platform Advertiser API


Ads Unified Platform Advertiser Public API

Ads Unified Platform - Public API for advertisers
Download OpenAPI specification:

Get creatives by organization and application


Returns a paginated list of creatives for the specified organization and application

Path parameters for "Get creatives by organization and application"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

Query parameters for "Get creatives by organization and application"

limit

number
default: 100
Maximum number of items to return

offset

number
default: 0
Number of items to skip

HTTP response status codes for "Get creatives by organization and application":

Code samples for "Get creatives by organization and application":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/creatives"

Response example

{ "items": [ { "id": "abc123def456ghi789jkl012", "name": "Spring Campaign Video", "language": "en", "type": "end_card_pair", "status": "uploaded", "files": [ { "name": "H264_high.mp4", "url": "https://example.com/assets/H264_high.mp4" } ], "createdAt": "2026-04-21T12:34:56.000Z", "updatedAt": "2026-04-21T13:00:00.000Z" } ], "meta": { "total": 100, "limit": 100, "offset": 0 }}

Create creative


Creates a new creative by uploading files and associated metadata. Accepts multipart/form-data with a
creativeInfo
JSON field and one or more file fields.
creativeInfo
must be the first field in the request body.

Path parameters for "Create creative"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

Request body for "Create creative"

Media Type:
multipart/form-data
One of

creativeInfo

object
required
No description

name

string
required
example: Spring Campaign Creative
Creative name

language

string
required
example: en
IANA language code

squareEndCard

object
required
No description

fileName

string
required
example: my-creative.jpg
Original file name used as display name

squareEndCardFile

string
required
image/*. Must be 800×800 px, max 20 MB.

HTTP response status codes for "Create creative":

Code samples for "Create creative":

Request example

curl -X POST \ -H "Content-Type: multipart/form-data" \ -d '{"creativeInfo":{"name":"Spring Campaign Creative","language":"en","squareEndCard":{"fileName":"my-creative.jpg"}},"squareEndCardFile":"string"}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/creatives"

Response example

{ "id": "abc123def456ghi789jkl012", "name": "Spring Campaign Video", "language": "en", "type": "end_card_pair", "status": "uploaded", "files": [ { "name": "H264_high.mp4", "url": "https://example.com/assets/H264_high.mp4" } ], "createdAt": "2026-04-21T12:34:56.000Z", "updatedAt": "2026-04-21T13:00:00.000Z"}

Get creative by ID


Returns a single creative for the specified organization and application

Path parameters for "Get creative by ID"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

creativeId

string
required
The Creative Public ID (24-character hexadecimal string)

HTTP response status codes for "Get creative by ID":

Code samples for "Get creative by ID":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/creatives/{creativeId}"

Response example

{ "id": "abc123def456ghi789jkl012", "name": "Spring Campaign Video", "language": "en", "type": "end_card_pair", "status": "uploaded", "files": [ { "name": "H264_high.mp4", "url": "https://example.com/assets/H264_high.mp4" } ], "createdAt": "2026-04-21T12:34:56.000Z", "updatedAt": "2026-04-21T13:00:00.000Z"}

Update creative by ID


Updates the name of a creative for the specified organization and application

Path parameters for "Update creative by ID"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

creativeId

string
required
The Creative Public ID (24-character hexadecimal string)

Request body for "Update creative by ID"

Media Type:
application/json

name

string
required
example: Spring Campaign Video
Creative name

HTTP response status codes for "Update creative by ID":

Code samples for "Update creative by ID":

Request example

curl -X PATCH \ -H "Content-Type: application/json" \ -d '{ "name": "Spring Campaign Video"}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/creatives/{creativeId}"

Response example

{ "id": "abc123def456ghi789jkl012", "name": "Spring Campaign Video", "language": "en", "type": "end_card_pair", "status": "uploaded", "files": [ { "name": "H264_high.mp4", "url": "https://example.com/assets/H264_high.mp4" } ], "createdAt": "2026-04-21T12:34:56.000Z", "updatedAt": "2026-04-21T13:00:00.000Z"}

Delete creative by ID


Deletes a single creative for the specified organization and application. Creative must not be assigned to a creative pack in order to be deleted.

Path parameters for "Delete creative by ID"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

creativeId

string
required
The Creative Public ID (24-character hexadecimal string)

HTTP response status codes for "Delete creative by ID":

Code samples for "Delete creative by ID":

Request example

curl -X DELETE \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/creatives/{creativeId}"

Response example

Create a campaign


Creates a new campaign for the specified application

Path parameters for "Create a campaign"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

Request body for "Create a campaign"

Media Type:
application/json

name

string
required
example: Clash of Clans Campaign
Campaign name

optimizationType

string
required
example: appEventConversion
Optimization Type

cpiType

string
example: manual
CPI Type - used only when creating a campaign (not persisted to DB). Manual or AutomaticMaxBid for CPI optimization.

postInstallWindow

string
example: D7
Post Install Window

appEventType

string
example: purchase
App Event Type for App Event Conversion Optimization Campaign

roasType

string
Roas Type for Roas Optimization Campaign

isCreativeTesting

boolean
required
example: true
Set this campaign for creative testing

start

string
required
example: 2026-01-28T10:00:00.000Z
Start date of the campaign

sdkEventNames

array[string]
example: ["purchase","level_complete"]
SDK event names

HTTP response status codes for "Create a campaign":

Code samples for "Create a campaign":

Request example

curl -X POST \ -H "Content-Type: application/json" \ -d '{ "name": "Clash of Clans Campaign", "optimizationType": "appEventConversion", "cpiType": "manual", "postInstallWindow": "D7", "appEventType": "purchase", "roasType": "iap", "isCreativeTesting": true, "start": "2026-01-28T10:00:00.000Z", "sdkEventNames": [ "purchase", "level_complete" ]}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns"

Response example

{ "id": "abc123def456ghi789jkl012", "applicationId": "550e8400-e29b-41d4-a716-446655440000", "name": "Clash of Clans Campaign", "billingType": "cpi", "postInstallWindow": "D7", "optimizationType": "appEventConversion", "roasType": "iap", "appEventType": "purchase", "autoFilling": false, "sdkEventNames": [ "purchase", "level_complete" ], "blocklistSources": [ "string" ], "allowlistSources": [ "string" ], "bidConfigurationMethod": "manual", "budgetPacingType": "DISCOUNTED", "forcePausedEnabled": true, "forcePauseReason": "manual", "apptopiaSourceCategoriesAllowlist": [ "string" ], "apptopiaSourceCategoriesBlocklist": [ "string" ], "sensorTowerSourceCategoriesAllowlist": [ "string" ], "sensorTowerSourceCategoriesBlocklist": [ "string" ], "allowlistCountrySubdivisions": [ { "country": "US", "subdivisions": [ 1, 2, 3 ] } ], "isCreativeTesting": false, "isNonCoppaOnly": false, "paused": true, "start": "2024-01-01T00:00:00.000Z", "end": "2025-01-01T00:00:00.000Z", "autoStart": "ENABLED", "isAutoEligible": true, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-15T00:00:00.000Z", "lastStartedAt": "2025-01-01T00:00:00.000Z", "editorId": "editor-123", "correlationId": "corr-456", "attribution": { "clickUrl": "https://app.adjust.com/abc123", "startUrl": "https://app.adjust.com/start/abc123", "viewUrl": "https://app.adjust.com/view/abc123", "partner": "adjust", "type": "userLevel", "isMMPAttributionDisabled": false }, "deviceTargeting": { "apple": { "deviceBlocklist": [ "iPhone6,1", "iPhone6,2" ], "osMinVersion": "14.0" }, "android": { "manufacturerAllowlist": [ "Samsung", "Google" ], "manufacturerBlocklist": [ "Huawei" ], "modelBlocklist": [ "SM-G950U" ], "osMinVersion": "10.0" } }, "application": { "id": "app-uuid", "name": "My Game", "advertiserGameId": 1234567890, "storeId": "com.example.game", "store": "AppleAppStore", "platform": "iOS", "iconUrl": "https://example.com/icon.png" }, "manualBids": [ { "country": "US", "bid": "1000000" } ], "manualSourceBids": [ { "bid": "1000000", "country": "US", "sourceAppId": "a1b2c3d4e5f6" } ], "appEventBids": [ { "country": "US", "bid": "1000000" } ], "roasBids": [ { "country": "US", "maxBid": "2000000", "target": 1.5 } ], "retentionBids": [ { "country": "US", "bid": "1000000", "maxBid": "2000000" } ], "budget": { "campaignLimitType": "total", "pacingType": "THROTTLED", "dailyLimitType": "daily", "total": "1000000000", "daily": "100000000", "countryGroupDailyLimits": [ { "countries": [ "US", "CA" ], "limit": "10000", "name": "North America" } ] }, "creativePackIds": [ "abc123def456ghi789jkl012" ]}

Get a campaign by ID


Returns a single campaign for the specified application. The
application
,
budget
,
bids
, and
creativePacks
fields are included in the response only when listed in the
includeFields
query parameter; any not listed are omitted from the response entirely.

Path parameters for "Get a campaign by ID"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

campaignId

string
required
The Campaign Public ID (24-character hexadecimal string)

Query parameters for "Get a campaign by ID"

includeFields

array
Extended fields to include in the response. Supported values: bids, budget, creativePacks, application. When omitted, only base campaign fields are returned.

HTTP response status codes for "Get a campaign by ID":

Code samples for "Get a campaign by ID":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}"

Response example

{ "id": "abc123def456ghi789jkl012", "applicationId": "550e8400-e29b-41d4-a716-446655440000", "name": "Clash of Clans Campaign", "billingType": "cpi", "postInstallWindow": "D7", "optimizationType": "appEventConversion", "roasType": "iap", "appEventType": "purchase", "autoFilling": false, "sdkEventNames": [ "purchase", "level_complete" ], "blocklistSources": [ "string" ], "allowlistSources": [ "string" ], "bidConfigurationMethod": "manual", "budgetPacingType": "DISCOUNTED", "forcePausedEnabled": true, "forcePauseReason": "manual", "apptopiaSourceCategoriesAllowlist": [ "string" ], "apptopiaSourceCategoriesBlocklist": [ "string" ], "sensorTowerSourceCategoriesAllowlist": [ "string" ], "sensorTowerSourceCategoriesBlocklist": [ "string" ], "allowlistCountrySubdivisions": [ { "country": "US", "subdivisions": [ 1, 2, 3 ] } ], "isCreativeTesting": false, "isNonCoppaOnly": false, "paused": true, "start": "2024-01-01T00:00:00.000Z", "end": "2025-01-01T00:00:00.000Z", "autoStart": "ENABLED", "isAutoEligible": true, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-15T00:00:00.000Z", "lastStartedAt": "2025-01-01T00:00:00.000Z", "editorId": "editor-123", "correlationId": "corr-456", "attribution": { "clickUrl": "https://app.adjust.com/abc123", "startUrl": "https://app.adjust.com/start/abc123", "viewUrl": "https://app.adjust.com/view/abc123", "partner": "adjust", "type": "userLevel", "isMMPAttributionDisabled": false }, "deviceTargeting": { "apple": { "deviceBlocklist": [ "iPhone6,1", "iPhone6,2" ], "osMinVersion": "14.0" }, "android": { "manufacturerAllowlist": [ "Samsung", "Google" ], "manufacturerBlocklist": [ "Huawei" ], "modelBlocklist": [ "SM-G950U" ], "osMinVersion": "10.0" } }, "application": { "id": "app-uuid", "name": "My Game", "advertiserGameId": 1234567890, "storeId": "com.example.game", "store": "AppleAppStore", "platform": "iOS", "iconUrl": "https://example.com/icon.png" }, "manualBids": [ { "country": "US", "bid": "1000000" } ], "manualSourceBids": [ { "bid": "1000000", "country": "US", "sourceAppId": "a1b2c3d4e5f6" } ], "appEventBids": [ { "country": "US", "bid": "1000000" } ], "roasBids": [ { "country": "US", "maxBid": "2000000", "target": 1.5 } ], "retentionBids": [ { "country": "US", "bid": "1000000", "maxBid": "2000000" } ], "budget": { "campaignLimitType": "total", "pacingType": "THROTTLED", "dailyLimitType": "daily", "total": "1000000000", "daily": "100000000", "countryGroupDailyLimits": [ { "countries": [ "US", "CA" ], "limit": "10000", "name": "North America" } ] }, "creativePackIds": [ "abc123def456ghi789jkl012" ]}

Update a campaign by ID


Updates the campaign details (name, scheduling, auto-start), liveness (paused) and attribution links.

Path parameters for "Update a campaign by ID"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

campaignId

string
required
The Campaign Public ID (24-character hexadecimal string)

Request body for "Update a campaign by ID"

Media Type:
application/json

name

string
example: Clash of Clans Campaign
Campaign name

start

string
example: 2026-01-28T10:00:00.000Z
Start date of the campaign

end

string
example: 2026-12-31T23:59:59.000Z
End date of the campaign

autoStart

string
example: ENABLED
Auto-start status of the campaign

paused

boolean
example: false
Whether the campaign is paused

attributionLinks

Attribution links for the campaign

HTTP response status codes for "Update a campaign by ID":

Code samples for "Update a campaign by ID":

Request example

curl -X PATCH \ -H "Content-Type: application/json" \ -d '{ "name": "Clash of Clans Campaign", "start": "2026-01-28T10:00:00.000Z", "end": "2026-12-31T23:59:59.000Z", "autoStart": "ENABLED", "paused": false, "attributionLinks": { "clickUrl": "https://app.adjust.com/abc123", "startUrl": "https://app.adjust.com/start/abc123", "viewUrl": "https://app.adjust.com/view/abc123" }}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}"

Response example

{ "id": "abc123def456ghi789jkl012", "name": "Clash of Clans Campaign", "start": "2024-01-01T00:00:00.000Z", "end": "2025-01-01T00:00:00.000Z", "autoStart": "ENABLED", "paused": true, "attributionLinks": { "clickUrl": "https://app.adjust.com/abc123", "startUrl": "https://app.adjust.com/start/abc123", "viewUrl": "https://app.adjust.com/view/abc123" }}

Delete a campaign by ID


Deletes a single campaign for the specified application.

Path parameters for "Delete a campaign by ID"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

campaignId

string
required
The Campaign Public ID (24-character hexadecimal string)

HTTP response status codes for "Delete a campaign by ID":

Code samples for "Delete a campaign by ID":

Request example

curl -X DELETE \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}"

Response example

Update a campaign budget cap


Creates or updates the budget cap for the specified campaign.

Path parameters for "Update a campaign budget cap"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

campaignId

string
required
The Campaign Public ID (24-character hexadecimal string)

Request body for "Update a campaign budget cap"

Media Type:
application/json

total

string
example: 1000000000
Total budget in microdollars

daily

string
example: 100000000
Daily budget in microdollars

countryGroupDailyLimits

array[object]
Country group daily limits

countries

array[string]
required
example: ["US","CA"]
List of ISO 3166-1 alpha-2 country codes in the group

limit

string
required
example: 1000000
Daily limit for the country group in microdollars

name

string
required
example: North America
Name of the country group

HTTP response status codes for "Update a campaign budget cap":

Code samples for "Update a campaign budget cap":

Request example

curl -X PATCH \ -H "Content-Type: application/json" \ -d '{ "total": "1000000000", "daily": "100000000", "countryGroupDailyLimits": [ { "countries": [ "US", "CA" ], "limit": "1000000", "name": "North America" } ]}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}/budget-cap"

Response example

{ "id": "abc123def456ghi789jkl012", "campaignLimitType": "total", "dailyLimitType": "daily", "total": "1000000000", "daily": "100000000", "countryGroupDailyLimits": [ { "countries": [ "US", "CA" ], "limit": "10000", "name": "North America" } ]}

Update campaign bids


Updates the bid configuration for the specified campaign. Provide the bid type in the request body; the bid type must match the campaign optimization type. Exactly one bid type may be sent, except that
manualBids
and
manualSourceBids
may be sent together.

Path parameters for "Update campaign bids"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

campaignId

string
required
The Campaign Public ID (24-character hexadecimal string)

Request body for "Update campaign bids"

Media Type:
application/json

roasBids

array[object]
example: [{"country":"US","target":1.5,"maxBid":1000000}]
ROAS bids

country

string
required
example: US
Country code

target

number
required
example: 1.5
Target ROAS value

maxBid

number
example: 1000000
Maximum bid amount in micros

manualSourceBids

array[object]
example: [{"country":"US","bid":1000000,"sourceAppId":"a1b2c3d4e5f6"}]
Manual source level bids

country

string
required
example: US
Country code

bid

number
required
example: 1000000
Bid amount in micros

sourceAppId

string
required
example: a1b2c3d4e5f6
Source app ID

manualBids

array[object]
example: [{"country":"US","bid":1000000}]
Manual bids

country

string
required
example: US
Country code

bid

number
required
example: 1000000
Bid amount in micros

appEventBids

array[object]
example: [{"country":"US","bid":1000000}]
App event bids

country

string
required
example: US
Country code

bid

number
required
example: 1000000
Bid amount in micros

HTTP response status codes for "Update campaign bids":

Code samples for "Update campaign bids":

Request example

curl -X PATCH \ -H "Content-Type: application/json" \ -d '{ "roasBids": [ { "country": "US", "target": 1.5, "maxBid": 1000000 } ], "manualSourceBids": [ { "country": "US", "bid": 1000000, "sourceAppId": "a1b2c3d4e5f6" } ], "manualBids": [ { "country": "US", "bid": 1000000 } ], "appEventBids": [ { "country": "US", "bid": 1000000 } ]}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}/bids"

Response example

{ "id": "abc123def456ghi789jkl012", "roasBids": [ { "country": "US", "maxBid": "2000000", "target": 1.5 } ], "manualBids": [ { "country": "US", "bid": "1000000" } ], "manualSourceBids": [ { "bid": "1000000", "country": "US", "sourceAppId": "a1b2c3d4e5f6" } ], "appEventBids": [ { "country": "US", "bid": "1000000" } ]}

Update campaign targeting


Modifies the targeting configuration of the specified campaign.

Path parameters for "Update campaign targeting"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

campaignId

string
required
The Campaign Public ID (24-character hexadecimal string)

Request body for "Update campaign targeting"

Media Type:
application/json

appleDevice

Apple device targeting settings

androidDevice

Android device targeting settings

allowlistCountrySubdivisions

array[object]
Regional targeting - allowlisted country subdivisions

country

string
required
example: US
Country code

subdivisions

array[number]
required
example: [1,2,3]
Subdivision IDs

apptopiaSourceCategoriesAllowlist

array[string]
example: ["Entertainment","Games:Puzzle"]
Apptopia categories to target exclusively; apps outside them are not served. Replaces the current allowlist.
The allowlist and blocklist are mutually exclusive — a campaign may use one or the other, but not both.
The accepted values depend on the store of the campaign's target application.
Accepted values (Apple App Store): Books, Education, Entertainment, Finance, Food & Drink, Games:Action, Games:Adventure, Games:Board, Games:Card, Games:Casino, Games:Casual, Games:Dice, Games:Educational, Games:Family, Games:Music, Games:Puzzle, Games:Racing, Games:Role Playing, Games:Simulation, Games:Sports, Games:Strategy, Games:Trivia, Games:Word, Health & Fitness, Lifestyle, Music, News, Photo & Video, Productivity, Shopping, Social Networking, Utilities.
Accepted values (Google Play): Books & Reference, Comics, Education, Entertainment, Finance, Food & Drink, Games:Action, Games:Adventure, Games:Arcade, Games:Board, Games:Card, Games:Casino, Games:Casual, Games:Educational, Games:Music, Games:Puzzle, Games:Racing, Games:Role Playing, Games:Simulation, Games:Sports, Games:Strategy, Games:Trivia, Games:Word, Health & Fitness, Lifestyle, Music & Audio, News & Magazines, Personalization, Photography, Productivity, Shopping, Social, Tools, Video Players & Editors, Weather.

apptopiaSourceCategoriesBlocklist

array[string]
example: ["Games:Casino"]
Apptopia categories to exclude; every other category is served. Replaces the current blocklist.
The allowlist and blocklist are mutually exclusive — a campaign may use one or the other, but not both.
The accepted values depend on the store of the campaign's target application.
Accepted values (Apple App Store): Books, Education, Entertainment, Finance, Food & Drink, Games:Action, Games:Adventure, Games:Board, Games:Card, Games:Casino, Games:Casual, Games:Dice, Games:Educational, Games:Family, Games:Music, Games:Puzzle, Games:Racing, Games:Role Playing, Games:Simulation, Games:Sports, Games:Strategy, Games:Trivia, Games:Word, Health & Fitness, Lifestyle, Music, News, Photo & Video, Productivity, Shopping, Social Networking, Utilities.
Accepted values (Google Play): Books & Reference, Comics, Education, Entertainment, Finance, Food & Drink, Games:Action, Games:Adventure, Games:Arcade, Games:Board, Games:Card, Games:Casino, Games:Casual, Games:Educational, Games:Music, Games:Puzzle, Games:Racing, Games:Role Playing, Games:Simulation, Games:Sports, Games:Strategy, Games:Trivia, Games:Word, Health & Fitness, Lifestyle, Music & Audio, News & Magazines, Personalization, Photography, Productivity, Shopping, Social, Tools, Video Players & Editors, Weather.

sensorTowerSourceCategoriesAllowlist

array[string]
example: ["Hypercasual:Puzzle","Puzzle:Word"]
Sensor Tower game categories to target exclusively; apps outside them are not served. Replaces the current allowlist.
The allowlist and blocklist are mutually exclusive — a campaign may use one or the other, but not both.

sensorTowerSourceCategoriesBlocklist

array[string]
example: ["Hypercasual:Arcade"]
Sensor Tower game categories to exclude; every other category is served. Replaces the current blocklist.
The allowlist and blocklist are mutually exclusive — a campaign may use one or the other, but not both.

blocklistSources

array[string]
example: ["source-a","source-b"]
Blocklisted sources (app targeting)

allowlistSources

array[string]
example: ["source-x","source-y"]
Allowlisted sources (app targeting)

HTTP response status codes for "Update campaign targeting":

Code samples for "Update campaign targeting":

Request example

curl -X PATCH \ -H "Content-Type: application/json" \ -d '{ "appleDevice": { "deviceBlocklist": [ "iPhone6,1", "iPhone6,2" ], "osMinVersion": "14.0" }, "androidDevice": { "manufacturerAllowlist": [ "Samsung", "Google" ], "manufacturerBlocklist": [ "Huawei" ], "modelBlocklist": [ "SM-G950U" ], "osMinVersion": "10.0" }, "allowlistCountrySubdivisions": [ { "country": "US", "subdivisions": [ 1, 2, 3 ] } ], "apptopiaSourceCategoriesAllowlist": [ "Entertainment", "Games:Puzzle" ], "apptopiaSourceCategoriesBlocklist": [ "Games:Casino" ], "sensorTowerSourceCategoriesAllowlist": [ "Hypercasual:Puzzle", "Puzzle:Word" ], "sensorTowerSourceCategoriesBlocklist": [ "Hypercasual:Arcade" ], "blocklistSources": [ "source-a", "source-b" ], "allowlistSources": [ "source-x", "source-y" ]}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}/targeting"

Response example

{ "id": "abc123def456ghi789jkl012", "appleDevice": { "deviceBlocklist": [ "iPhone6,1", "iPhone6,2" ], "osMinVersion": "14.0" }, "androidDevice": { "manufacturerAllowlist": [ "Samsung", "Google" ], "manufacturerBlocklist": [ "Huawei" ], "modelBlocklist": [ "SM-G950U" ], "osMinVersion": "10.0" }, "allowlistCountrySubdivisions": [ { "country": "US", "subdivisions": [ 1, 2, 3 ] }, { "country": "CA", "subdivisions": [ 10, 20 ] } ], "apptopiaSourceCategoriesAllowlist": [ "Entertainment", "Games:Puzzle" ], "apptopiaSourceCategoriesBlocklist": [ "Games:Casino" ], "sensorTowerSourceCategoriesAllowlist": [ "Hypercasual:Puzzle", "Puzzle:Word" ], "sensorTowerSourceCategoriesBlocklist": [ "Hypercasual:Arcade" ], "blocklistSources": [ "source-a", "source-b" ], "allowlistSources": [ "source-x", "source-y" ]}

Assign creative packs to a campaign


Replaces the campaign creative packs with the provided list. Duplicate IDs are removed. Returns the full list of assigned creative pack IDs.

Path parameters for "Assign creative packs to a campaign"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

campaignId

string
required
The Campaign Public ID (24-character hexadecimal string)

Request body for "Assign creative packs to a campaign"

Media Type:
application/json

creativePackIds

array[string]
required
example: ["697cd528d6befff74e809084","697cd528d6befff74e809085"]
List of creative pack public IDs to assign to the campaign

HTTP response status codes for "Assign creative packs to a campaign":

Code samples for "Assign creative packs to a campaign":

Request example

curl -X PATCH \ -H "Content-Type: application/json" \ -d '{ "creativePackIds": [ "697cd528d6befff74e809084", "697cd528d6befff74e809085" ]}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}/assign-creative-pack"

Response example

{ "creativePackIds": [ "697cd528d6befff74e809084", "697cd528d6befff74e809085" ]}

Unassign creative packs from a campaign


Removes the provided creative packs from the campaign. IDs that are not currently assigned are ignored. Returns the full list of creative pack IDs that remain assigned.

Path parameters for "Unassign creative packs from a campaign"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

campaignId

string
required
The Campaign Public ID (24-character hexadecimal string)

Request body for "Unassign creative packs from a campaign"

Media Type:
application/json

creativePackIds

array[string]
required
example: ["697cd528d6befff74e809084","697cd528d6befff74e809085"]
List of creative pack public IDs to unassign from the campaign

HTTP response status codes for "Unassign creative packs from a campaign":

Code samples for "Unassign creative packs from a campaign":

Request example

curl -X DELETE \ -H "Content-Type: application/json" \ -d '{ "creativePackIds": [ "697cd528d6befff74e809084", "697cd528d6befff74e809085" ]}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}/unassign-creative-pack"

Response example

{ "creativePackIds": [ "697cd528d6befff74e809084" ]}

Get campaigns for an organization


Returns a paginated list of campaigns for the specified organization. The
application
,
budget
,
bids
, and
creativePacks
fields are included for each campaign only when listed in the
includeFields
query parameter; any not listed are omitted from the response entirely.

Path parameters for "Get campaigns for an organization"

organizationId

number
required
The Genesis ID of the organization

Query parameters for "Get campaigns for an organization"

limit

number
default: 100
Maximum number of items to return

offset

number
default: 0
Number of items to skip

appIds

array
Filter by application IDs.

live

boolean
Filter by live status. When true, only live (not paused) campaigns are returned; when false, only paused campaigns.

optimizationType

array
Filter by optimization type.

includeFields

array
Extended fields to include in each campaign. Supported values: bids, budget, creativePacks, application. When omitted, only base campaign fields are returned.

HTTP response status codes for "Get campaigns for an organization":

Code samples for "Get campaigns for an organization":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/campaigns"

Response example

{ "items": [ { "id": "abc123def456ghi789jkl012", "applicationId": "550e8400-e29b-41d4-a716-446655440000", "name": "Clash of Clans Campaign", "billingType": "cpi", "postInstallWindow": "D7", "optimizationType": "appEventConversion", "roasType": "iap", "appEventType": "purchase", "autoFilling": false, "sdkEventNames": [ "purchase", "level_complete" ], "blocklistSources": [ "string" ], "allowlistSources": [ "string" ], "bidConfigurationMethod": "manual", "budgetPacingType": "DISCOUNTED", "forcePausedEnabled": true, "forcePauseReason": "manual", "apptopiaSourceCategoriesAllowlist": [ "string" ], "apptopiaSourceCategoriesBlocklist": [ "string" ], "sensorTowerSourceCategoriesAllowlist": [ "string" ], "sensorTowerSourceCategoriesBlocklist": [ "string" ], "allowlistCountrySubdivisions": [ { "country": "US", "subdivisions": [ 1, 2, 3 ] } ], "isCreativeTesting": false, "isNonCoppaOnly": false, "paused": true, "start": "2024-01-01T00:00:00.000Z", "end": "2025-01-01T00:00:00.000Z", "autoStart": "ENABLED", "isAutoEligible": true, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-15T00:00:00.000Z", "lastStartedAt": "2025-01-01T00:00:00.000Z", "editorId": "editor-123", "correlationId": "corr-456", "attribution": { "clickUrl": "https://app.adjust.com/abc123", "startUrl": "https://app.adjust.com/start/abc123", "viewUrl": "https://app.adjust.com/view/abc123", "partner": "adjust", "type": "userLevel", "isMMPAttributionDisabled": false }, "deviceTargeting": { "apple": { "deviceBlocklist": [ "iPhone6,1", "iPhone6,2" ], "osMinVersion": "14.0" }, "android": { "manufacturerAllowlist": [ "Samsung", "Google" ], "manufacturerBlocklist": [ "Huawei" ], "modelBlocklist": [ "SM-G950U" ], "osMinVersion": "10.0" } }, "application": { "id": "app-uuid", "name": "My Game", "advertiserGameId": 1234567890, "storeId": "com.example.game", "store": "AppleAppStore", "platform": "iOS", "iconUrl": "https://example.com/icon.png" }, "manualBids": [ { "country": "US", "bid": "1000000" } ], "manualSourceBids": [ { "bid": "1000000", "country": "US", "sourceAppId": "a1b2c3d4e5f6" } ], "appEventBids": [ { "country": "US", "bid": "1000000" } ], "roasBids": [ { "country": "US", "maxBid": "2000000", "target": 1.5 } ], "retentionBids": [ { "country": "US", "bid": "1000000", "maxBid": "2000000" } ], "budget": { "campaignLimitType": "total", "pacingType": "THROTTLED", "dailyLimitType": "daily", "total": "1000000000", "daily": "100000000", "countryGroupDailyLimits": [ { "countries": null, "limit": null, "name": null } ] }, "creativePackIds": [ "abc123def456ghi789jkl012" ] } ], "meta": { "total": 100, "limit": 100, "offset": 0 }}

Get app event eligibility for an organization


Returns eligible app events and their post-install windows for the specified organization

Path parameters for "Get app event eligibility for an organization"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

HTTP response status codes for "Get app event eligibility for an organization":

Code samples for "Get app event eligibility for an organization":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/eligibility"

Response example

{ "total": 2, "results": [ { "eventOptimizationType": "level_complete", "countries": [ "US", "GB" ] } ]}

Get SDK event names for applications


Returns available SDK event names for specified application

Path parameters for "Get SDK event names for applications"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

HTTP response status codes for "Get SDK event names for applications":

Code samples for "Get SDK event names for applications":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/sdk-event-names"

Response example

{ "total": 1, "results": [ { "eventOptimizationType": "levelComplete", "sdkEventNames": [ "level_complete_01", "level_complete_02" ] } ]}

Get creative packs


Returns a paginated list of creative packs for the specified application

Path parameters for "Get creative packs"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

Query parameters for "Get creative packs"

offset

number
default: 0
Number of results to skip

limit

number
default: 100
Maximum number of results to return

name

string
Filter by creative pack name (case-insensitive, partial match)

HTTP response status codes for "Get creative packs":

Code samples for "Get creative packs":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/creative-packs"

Response example

{ "total": 42, "offset": 0, "limit": 700, "results": [ { "id": "abc123def456ghi789jkl012", "applicationId": "12345678-1234-1234-1234-123456789012", "name": "Summer Campaign Creatives", "type": "video", "appleProductPageId": "12345678-1234-1234-1234-123456789012", "androidStoreListing": "summer-listing", "moderationStatus": "approved", "ageRating": 18, "creativeIds": [ "crt_abc123xyz456def7890ghij" ], "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z", "assignedCampaignIds": [ "abc123def456ghi789jkl012", "abc123def456ghi789jkl013" ] } ]}

Create a creative pack


Creates a new creative pack for the specified application. Each pack type requires a specific combination of creatives:
  • video
    : 1-2 video creatives and exactly 1 end card creative
  • playable
    : 1-2 playable creatives
  • video+playable
    : 1-2 video creatives and exactly 1 responsive playable creative
  • banner
    : 1-10 banner creatives
When a pack includes 2 video or 2 playable creatives, one must be landscape and one portrait.

Path parameters for "Create a creative pack"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

Request body for "Create a creative pack"

Media Type:
application/json

name

string
required
example: Summer Campaign Creatives
Creative pack name

appleProductPageId

string
example: 12345678-1234-1234-1234-123456789012
Apple product page ID

androidStoreListing

string
example: summer-listing
Android store listing ID

type

string
required
example: video
Creative pack type. Each type requires a specific combination of creatives — see the endpoint description.

creativeIds

array[string]
required
example: ["crt_abc123xyz456def7890ghij","crt_endcard123xyz456def7890g"]
Public identifiers of the creatives to include in the creative pack

HTTP response status codes for "Create a creative pack":

Code samples for "Create a creative pack":

Request example

curl -X POST \ -H "Content-Type: application/json" \ -d '{ "name": "Summer Campaign Creatives", "appleProductPageId": "12345678-1234-1234-1234-123456789012", "androidStoreListing": "summer-listing", "type": "video", "creativeIds": [ "crt_abc123xyz456def7890ghij", "crt_endcard123xyz456def7890g" ]}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/creative-packs"

Response example

{ "id": "abc123def456ghi789jkl012", "applicationId": "12345678-1234-1234-1234-123456789012", "name": "Summer Campaign Creatives", "type": "video", "appleProductPageId": "12345678-1234-1234-1234-123456789012", "androidStoreListing": "summer-listing", "moderationStatus": "approved", "ageRating": 18, "creativeIds": [ "crt_abc123xyz456def7890ghij" ], "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z", "assignedCampaignIds": [ "abc123def456ghi789jkl012", "abc123def456ghi789jkl013" ]}

Get a creative pack by ID


Returns detailed information about a specific creative pack

Path parameters for "Get a creative pack by ID"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

creativePackId

string
required
The Creative Pack Public ID (24-character hexadecimal string)

HTTP response status codes for "Get a creative pack by ID":

Code samples for "Get a creative pack by ID":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/creative-packs/{creativePackId}"

Response example

{ "id": "abc123def456ghi789jkl012", "applicationId": "12345678-1234-1234-1234-123456789012", "name": "Summer Campaign Creatives", "type": "video", "appleProductPageId": "12345678-1234-1234-1234-123456789012", "androidStoreListing": "summer-listing", "moderationStatus": "approved", "ageRating": 18, "creativeIds": [ "crt_abc123xyz456def7890ghij" ], "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z", "assignedCampaignIds": [ "abc123def456ghi789jkl012", "abc123def456ghi789jkl013" ]}

Update a creative pack


Updates the name and store page info for the specified creative pack

Path parameters for "Update a creative pack"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

creativePackId

string
required
The Creative Pack Public ID (24-character hexadecimal string)

Request body for "Update a creative pack"

Media Type:
application/json

name

string
example: Summer Campaign Creatives
Creative pack name

appleProductPageId

string
example: 12345678-1234-1234-1234-123456789012
Apple product page ID

androidStoreListing

string
example: summer-listing
Android store listing ID

HTTP response status codes for "Update a creative pack":

Code samples for "Update a creative pack":

Request example

curl -X PATCH \ -H "Content-Type: application/json" \ -d '{ "name": "Summer Campaign Creatives", "appleProductPageId": "12345678-1234-1234-1234-123456789012", "androidStoreListing": "summer-listing"}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/creative-packs/{creativePackId}"

Response example

{ "id": "abc123def456ghi789jkl012", "applicationId": "12345678-1234-1234-1234-123456789012", "name": "Summer Campaign Creatives", "type": "video", "appleProductPageId": "12345678-1234-1234-1234-123456789012", "androidStoreListing": "summer-listing", "moderationStatus": "approved", "ageRating": 18, "creativeIds": [ "crt_abc123xyz456def7890ghij" ], "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z", "assignedCampaignIds": [ "abc123def456ghi789jkl012", "abc123def456ghi789jkl013" ]}

Delete a creative pack


Deletes the specified creative pack (if it is not associated with any campaigns)

Path parameters for "Delete a creative pack"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

creativePackId

string
required
The Creative Pack Public ID (24-character hexadecimal string)

HTTP response status codes for "Delete a creative pack":

Code samples for "Delete a creative pack":

Request example

curl -X DELETE \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/creative-packs/{creativePackId}"

Response example

Get application attribution


Returns the attribution configuration for the specified application

Path parameters for "Get application attribution"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

HTTP response status codes for "Get application attribution":

Code samples for "Get application attribution":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/attribution"

Response example

{ "id": "550e8400-e29b-41d4-a716-446655440000", "startUrl": "https://app.adjust.com/start/abc123", "clickUrl": "https://app.adjust.com/abc123", "viewUrl": "https://app.adjust.com/view/abc123", "partner": "adjust", "type": "userLevel", "createdAt": "2026-04-21T12:34:56.000Z", "updatedAt": "2026-04-21T13:00:00.000Z"}

Update application attribution


Updates the attribution URLs for the specified application

Path parameters for "Update application attribution"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

Request body for "Update application attribution"

Media Type:
application/json

startUrl

string
example: https://app.adjust.com/start/abc123
Attribution start URL

clickUrl

string
example: https://app.adjust.com/abc123
Attribution click URL

viewUrl

string
example: https://app.adjust.com/view/abc123
Attribution view URL

HTTP response status codes for "Update application attribution":

Code samples for "Update application attribution":

Request example

curl -X PATCH \ -H "Content-Type: application/json" \ -d '{ "startUrl": "https://app.adjust.com/start/abc123", "clickUrl": "https://app.adjust.com/abc123", "viewUrl": "https://app.adjust.com/view/abc123"}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}/attribution"

Response example

{ "id": "550e8400-e29b-41d4-a716-446655440000", "startUrl": "https://app.adjust.com/start/abc123", "clickUrl": "https://app.adjust.com/abc123", "viewUrl": "https://app.adjust.com/view/abc123", "partner": "adjust", "type": "userLevel", "createdAt": "2026-04-21T12:34:56.000Z", "updatedAt": "2026-04-21T13:00:00.000Z"}

Get applications for an organization


Returns all applications associated with a specific organization

Path parameters for "Get applications for an organization"

organizationId

number
required
The Genesis ID of the organization

HTTP response status codes for "Get applications for an organization":

Code samples for "Get applications for an organization":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications"

Response example

[ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "My Game App", "gameId": 12345, "platform": "iOS", "iconUrl": "https://example.com/icon.png", "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8", "storeId": "com.example.app", "store": "AppleAppStore", "testMode": "forceAll", "kidsSettings": false, "coppa": false, "mixedAudience": false }]

Create an application


Creates a new application for a specific organization

Path parameters for "Create an application"

organizationId

number
required
The Genesis ID of the organization

Query parameters for "Create an application"

dryrun

boolean
Dry-run mode. When
true
, the request is fully validated but no changes are persisted (DB writes are rolled back and external calls are skipped). The response echoes the would-be result with an
x-dry-run: true
header. For application create/update, dry-run validates the request and business rules only — it does not reserve names or guarantee downstream acceptance.

Request body for "Create an application"

Media Type:
application/json

name

string
required
Application name

platform

string
required
Application platform

iconUrl

string
Application icon URL

storeId

string
Store identifier

store

string
Store name

privacy

Privacy settings

projectId

string
ID of the project to associate the new app with

projectName

string
Name for a new project to create and associate the app with. Only used when projectId is not provided; defaults to the application name when omitted.

HTTP response status codes for "Create an application":

Code samples for "Create an application":

Request example

curl -X POST \ -H "Content-Type: application/json" \ -d '{ "name": "string", "platform": "string", "iconUrl": "https://example.com", "storeId": "string", "store": "string", "privacy": { "coppa": true, "mixedAudience": true }, "projectId": "string", "projectName": "string"}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications"

Response example

{ "id": "550e8400-e29b-41d4-a716-446655440000", "name": "My Game App", "gameId": 12345, "platform": "iOS", "iconUrl": "https://example.com/icon.png", "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8", "storeId": "com.example.app", "store": "AppleAppStore", "testMode": "forceAll", "kidsSettings": false, "coppa": false, "mixedAudience": false}

Get an application by ID


Returns application metadata for a specific application within an organization

Path parameters for "Get an application by ID"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

HTTP response status codes for "Get an application by ID":

Code samples for "Get an application by ID":

Request example

curl -X GET \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}"

Response example

{ "id": "550e8400-e29b-41d4-a716-446655440000", "name": "My Game App", "gameId": 12345, "platform": "iOS", "iconUrl": "https://example.com/icon.png", "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8", "storeId": "com.example.app", "store": "AppleAppStore", "testMode": "forceAll", "kidsSettings": false, "coppa": false, "mixedAudience": false}

Update an application


Updates an existing application for a specific organization (partial update)

Path parameters for "Update an application"

organizationId

number
required
The Genesis ID of the organization

applicationId

string
required
The Unity App ID

Query parameters for "Update an application"

dryrun

boolean
Dry-run mode. When
true
, the request is fully validated but no changes are persisted (DB writes are rolled back and external calls are skipped). The response echoes the would-be result with an
x-dry-run: true
header. For application create/update, dry-run validates the request and business rules only — it does not reserve names or guarantee downstream acceptance.

Request body for "Update an application"

Media Type:
application/json

name

string
Application name

storeId

string
Store identifier

store

string
Store name

privacy

Privacy settings

kidsSettings

boolean
Kids settings flag. When true, triggers a USF update with coppa=true.

HTTP response status codes for "Update an application":

Code samples for "Update an application":

Request example

curl -X PATCH \ -H "Content-Type: application/json" \ -d '{ "name": "string", "storeId": "string", "store": "string", "privacy": { "coppa": true, "mixedAudience": true }, "kidsSettings": true}' \ "https://services.api.unity.com/ads/advertiser/public/v1/organizations/{organizationId}/applications/{applicationId}"

Response example

{ "id": "550e8400-e29b-41d4-a716-446655440000", "name": "My Game App", "gameId": 12345, "platform": "iOS", "iconUrl": "https://example.com/icon.png", "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8", "storeId": "com.example.app", "store": "AppleAppStore", "testMode": "forceAll", "kidsSettings": false, "coppa": false, "mixedAudience": false}