Campaign
The top-level container that defines a campaign’s promoted object, billing, scheduling, and targeting.
Declaration
object CampaignProperties
| Name | Type | Description |
|---|---|---|
adAccountId | int64 | The ad account this campaign belongs to. Read-only. |
name | string | Campaign name. Maximum 200 characters. Must be non-empty. Mutable. |
billingEvent | Campaign.BillingEvent | The event type that triggers a charge (for example, |
paymentModel | Campaign.PaymentModel | The payment model for this campaign (for example, |
startTime | date-time | The scheduled start date and time of the campaign. Format: |
endTime | date-time | The scheduled end date and time. Format: |
promotedObjectType | Campaign.PromotedObjectType | Whether this campaign promotes an App Store app ( |
promotedObjectId | string | The identifier of the promoted entity: the |
status | Campaign.Status | Captures the advertiser’s intent for the campaign to serve. See CampaignStatus. Mutable. |
systemStatus | Campaign.SystemStatus | System-computed operational status reflecting the campaign’s current serving state. See CampaignSystemStatus. System-set, Read-only. |
systemStatusReasons | [Campaign.SystemStatusReasons] | System-applied reasons that contribute to the current |
systemStatusLimitingReasons | [Campaign.SystemStatusLimitingReasons] | System-applied reasons that limit delivery below maximum potential. See CampaignSystemLimitedStatusReason for possible values. System-set, Read-only. |
displayStatus | Campaign.DisplayStatus | System-computed, rolled-up delivery state combining |
dailyBudget | Campaign.DailyBudget | The required daily spend cap for this campaign. Limits spending each calendar day, independent of any shared budget assignments. See DailyBudget. Mutable. |
sharedBudgets | [SharedBudgetAssignment] | One or more budget orders assigned to this campaign. Each assignment enforces a flight-period spending cap defined by the budget order’s |
targeting | Campaign.Targeting | Country or region, supply source, and placement targeting configuration for this campaign. See CampaignTargeting. Mutable. |
bidStrategy | Campaign.BidStrategy | The bid strategy governing how this campaign competes in auctions. See BidStrategy. Mutable. |
invoiceDetail | Campaign.InvoiceDetail | Invoice and billing contact details. Required for Line of Credit accounts. See InvoiceDetail. Mutable. |
regulationResponses | [RegulationResponse] | Regulatory consent acknowledgments required in certain markets. See RegulationResponse. Mutable. |
id | int64 | System-assigned unique identifier for this campaign. System-set, Read-only. |
creationTime | date-time | Timestamp when this campaign was created (ISO 8601). System-set, Read-only. |
modificationTime | date-time | Timestamp of the last modification to this campaign (ISO 8601). System-set, Read-only. |
deleted | boolean | Whether this campaign has been soft-deleted. System-set, Read-only. |
Discussion
A Campaign is the top-level advertising container that defines the promoted object, billing model, scheduling, and geographic targeting for a set of ad groups. Each campaign belongs to a single ad account and promotes either an App Store app (APPSTORE_APP) or a brand (BUSINESS_BRAND). The billingEvent, promotedObjectType, and promotedObjectId fields stay fixed after creation. To change any of them, create a new campaign.
The status field captures the advertiser’s intent for the campaign to serve. The systemStatus field reflects Apple’s system assessment of whether the campaign can deliver. When systemStatus isn’t RUNNING, inspect systemStatusReasons to identify blocking conditions and systemStatusLimitingReasons for delivery-reducing (but non-blocking) factors.
A required dailyBudget cap controls the campaign’s budget and limits daily spending. You can also assign a campaign to one or more shared budgets via sharedBudgets. The two budget controls function independently: dailyBudget enforces a daily cap. Each shared budget enforces a flight-period cap defined by its startTime and endTime.
Fields you can filter and sort on when querying campaigns are listed in Query Campaigns. For the complete list of required and optional fields at creation, see CampaignCreate. For the fields that you can change after creation, see CampaignUpdate.
Example
{
"id": 123456789,
"adAccountId": 555666777,
"name": "AwayFinder Fall Launch",
"billingEvent": "TAPS",
"paymentModel": "LOC",
"startTime": "2025-01-10T08:00:00.000",
"endTime": "2025-12-31T00:00:00.000",
"promotedObjectType": "APPSTORE_APP",
"promotedObjectId": "987654321",
"status": "ENABLED",
"systemStatus": "RUNNING",
"systemStatusReasons": [],
"systemStatusLimitingReasons": [],
"displayStatus": "RUNNING",
"dailyBudget": {
"value": {
"amount": "100.00",
"currency": "USD"
}
},
"sharedBudgets": [
{
"budgetId": 246813579
}
],
"targeting": {
"supplySource": {
"include": [
"APPSTORE"
]
},
"supplyPlacement": {
"include": [
"APPSTORE_SEARCH_RESULTS"
]
},
"countryOrRegion": {
"include": [
"US",
"CA"
]
}
},
"bidStrategy": {
"bidStrategyType": "MANUAL_CPT",
"bidStrategyGoal": "TAP",
"bid": {
"amount": "2.50",
"currency": "USD"
}
},
"invoiceDetail": {
"name": "AwayFinder Q3 Invoice",
"orderNumber": "PO-2025-0456",
"clientName": "AwayFinder Inc.",
"primaryBuyerName": "Jordan Lee",
"primaryBuyerEmail": "jordan.lee@awayfinder.com",
"billingEmail": "billing@awayfinder.com"
},
"regulationResponses": [
{
"regulationType": "CAMPAIGN_SAPIN_LAW",
"responseValue": "NOT_ANSWERED"
}
],
"creationTime": "2025-01-10T08:00:00.000",
"modificationTime": "2025-01-10T08:00:00.000",
"deleted": false
}