Campaigns
A campaign has a business objective and organizes Ad Squads. You can define a goal and view stats for this campaign to see whether your goal has been reached. The reports and stats combines all the ad squads within this campaign.
Campaign Attributes
| Attribute | Description | Required | Possible Values |
|---|---|---|---|
| ad_account_id | Ad Account ID | R | |
| daily_budget_micro | Daily Spend Cap (micro-currency) | O | |
| end_time | End time | O | |
| name | Campaign name | R | max length: 375 characters |
| start_time | Start time | R | |
| status | Campaign status | R | ACTIVE, PAUSED |
| lifetime_spend_cap_micro | Lifetime spend cap for the campaign (microcurrency) | O | |
| measurement_spec | The apps to be tracked for this campaign | R - Required for tracking installs for campaigns containing these ad types: APP_INSTALL, DEEP_LINK, STORY (which swipes up to APP_INSTALL, DEEP_LINK) LENS_APP_INSTALL, LENS_DEEP_LINK | {"ios_app_id":"1234", "android_app_url":"com.snapchat.android"} |
| objective | Objective of the Campaign | O | BRAND_AWARENESS (default), APP_CONVERSION, APP_INSTALL, CATALOG_SALES, ENGAGEMENT, LEAD_GENERATION, VIDEO_VIEW, WEB_CONVERSION, PROMOTE_STORIES, PROMOTE_PLACES |
| objective_v2_properties | See table for Campaign Objective V2 properties | O | See table for Campaign Objective V2 properties |
| buy_model** | Buy Model | O | AUCTION(default), RESERVED |
| regulations++ | Required for Campaigns that run Ads for Credit, Housing, Employment (CHE) | O | { "restricted_delivery_signals": true } |
| regulations+- | The candidate / ballot field is optional, but may be required in certain states | O | { "candidate_ballot_information":"Voting rights for dogs" } |
| delivery_status | Delivery status | Read-only | See Delivery status |
| deleted | Indicates whether the entity has been deleted or not, only shown when using the parameter read_deleted_entities | Read-only | true |
** Coming soon. See Reach And Frequency
++ The regulations attribute alongside restricted_delivery_signals is required for Campaigns running Ads promoting Housing, Credit, Employment (HCE), this attribute has to be activated at Ad Account level first or it cannot be used at Campaign level; https://businesshelp.snapchat.com/en-US/a/create-ad-account. Ad Squads created within a Campaign promoting HCE has a limited option of Optimization Goals.
+- The regulations attribute alongside the candidate_ballot_information field is optional, but may be required in certain states The paying_advertiser attribute has to be activated at Ad Account level first or the candidate/ballot field cannot be used at Campaign level; https://businesshelp.snapchat.com/en-US/a/create-ad-account
To enable app install and post-install attribution on ads, the measurement_spec field must be populated with the corresponding iOS and Android app IDs on campaign creation.
lifetime_spend_cap_micro can be increased and removed. Reducing the limit is allowed as long as the new limit is 1.1 times the amount already spent. daily_budget_micro set at the campaign level & the new lifetime_spend_cap_micro are evaluated independently. Delivery stops when either the Ad Account spend cap or the Campaign Lifetime spend cap is reached.
Campaign Objective V2 properties
The following attributes are used by the property objective_v2_properties
| Attribute | Description | Required | Possible Values |
|---|---|---|---|
| objective_v2_type | The Objective type | O | AWARENESS_AND_ENGAGEMENT, SALES, TRAFFIC, APP_PROMOTION, LEADS |
| promotion_type | The Promotion type | O | PROMOTE_PLACES, PROMOTE_SHOWS, APP_INSTALL, APP_REENGAGEMENT |
Campaign Objective V2
The new Campaign level attribute objective_v2_properties replaces the objective attribute, the objective attribute offered users a choice of 12 different Campaign objectives when setting up a Campaign, with the introduction of objective_v2_properties this has changed to 5 options.
The objective_v2_properties attribute is optional, just as the objective attribute was, and is used only for the business logic surfaced by Snap Ads Manager, determining the Optimization Goal options available to Ad Squads. If your application is currently making use of the objective attribute, you are expected to start using objective_v2_properties before 2025.
Along with the launch of objective_v2_properties we are also launching a new entity named Ad Squad Render UI Data ( ad_squad_ui_render_data ), this entity has a one-to-one relationship with the Ad Squad entity and is part of the business logic decision tree. The Ad Squad Render UI Data tells the business logic whether the Ad Squad contains ads for WEB, APP, or MIXED in the case of a combination of the two,
Timelines Objective V2
| Time | Phase | Description |
|---|---|---|
| September - December 2024 | Roll-out of objective_v2_properties | The default state for Ads creation in Ads Manager will be the new Advanced creation flow that use objective_v2_properties. We will continue to set both the objective and objective_v2_properties for Campaigns to ensure that Partner applications can still handle these Campaigns - see table Snap Ads Manager - objective to objective_v2 Applications that make use of the objective value are expected to make the transition from objective and fully adopt objective_v2_properties see table Business logic - objective to objective_v2 for guidance on the new Business logic. |
| 21 March 2025 | Introduction of translator service from objective to objective_v2_properties | On the 21 March 2025 any application that still creates Campaigns using only the objective will have an objective_v2_properties value applied automatically via our translator service - see table objective_v2 - API Campaign creation default behaviour . |
| 24 March 2025 | Backfill of objective_v2_properties | On the 21 March 2025 we will automatically populate the objective_v2_properties for campaigns that only contain the objective value. |
Business logic - objective to objective_v2
This table compares the business logic of the objective attribute to the new objective_v2_properties attribute, this allows 3rd party applicationss to fully or partly follow the same Business Logic that Snap Ads Manager offers.
The left side of the table presents Optimization Goals based on the old objective attribute, the right side of the table presents the Optimization Goals based on objective_v2_properties. The conversion_location column refers to the new entity ad_squad_ui_render_data and defines goals offered based on the intended location of conversion, Web, App or Lead form.
Note that validation given SKAd enablement, Dynamic Ads and HCE (Housing Credit Employment) still is applicable to the Optimization Goals available. Read about HCE and Optimization Goals
| Previous logic - objective only | New logic - Campaign objective_v2_type - promotion_type - Ad Squad UI Render Data | ||||
|---|---|---|---|---|---|
| objective | optimization goals | objective_v2_type | promotion_type | conversion_location | optimization goals |
| BRAND_AWARENESS | IMPRESSIONS, SWIPES, STORY_OPENS, USES | AWARENESS_AND_ENGAGEMENT | - | - | IMPRESSIONS, SWIPES, STORY_OPENS, USES, VIDEO_VIEWS, VIDEO_VIEWS_15_SEC |
| PROMOTE_STORIES | IMPRESSIONS | AWARENESS_AND_ENGAGEMENT | PROMOTE_STORIES* | - | IMPRESSIONS |
| PROMOTE_PLACES | SWIPES | AWARENESS_AND_ENGAGEMENT | PROMOTE_PLACES* | - | SWIPES |
| APP_CONVERSION | SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART, APP_LEVEL_COMPLETE, APP_ACHIEVEMENT_UNLOCKED, APP_AD_VIEW, APP_REENGAGE_PURCHASE, APP_REENGAGE_OPEN, LANDING_PAGE_VIEW | APP_PROMOTION | APP_INSTALL | APP | IMPRESSIONS, SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART, APP_LEVEL_COMPLETE, APP_ACHIEVEMENT_UNLOCKED, APP_AD_VIEW |
| APP_CONVERSION with Dynamic Ads | SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART, APP_REENGAGE_PURCHASE, APP_REENGAGE_OPEN | APP_PROMOTION | APP_INSTALL with Dynamic Ads | APP | IMPRESSIONS, SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART, APP_LEVEL_COMPLETE, APP_ACHIEVEMENT_UNLOCKED, APP_AD_VIEW |
| APP_CONVERSION with SKAdNetwork enabled | SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART | APP_PROMOTION | APP_INSTALL with SKAdNetwork enabled | APP | IMPRESSIONS, SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART |
| APP_CONVERSION with Dynamic Ads and SKAdNetwork enabled | SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP | APP_PROMOTION | APP_INSTALL with Dynamic Ads and SKAdNetwork enabled | APP | IMPRESSIONS, SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART |
| WEB_CONVERSION | SWIPES, STORY_OPENS, PIXEL_PAGE_VIEW, PIXEL_SIGNUP, PIXEL_ADD_TO_CART, PIXEL_PURCHASE, PIXEL_PURCHASE_VO, LANDING_PAGE_VIEW | SALES | - | WEB | SWIPES, STORY_OPENS, PIXEL_PURCHASE, PIXEL_SIGNUP, PIXEL_ADD_TO_CART, PIXEL_PAGE_VIEW, LANDING_PAGE_VIEW |
| LEAD_GENERATION | LEAD_FORM_SUBMISSIONS, SWIPES, STORY_OPENS, PIXEL_SIGN_UP | LEADS | - | WEB | SWIPES, STORY_OPENS, PIXEL_SIGN_UP, LANDING_PAGE_VIEW |
| LEAD_GENERATION | LEAD_FORM_SUBMISSIONS, SWIPES, STORY_OPENS, PIXEL_SIGN_UP | LEADS | - | LEAD_FORM | SWIPES, LEAD_FORM_SUBMISSIONS |
| - | - | LEADS | - | CALL, TEXT | IMPRESSIONS, SWIPES |
| APP_INSTALL | SWIPES, IMPRESSIONS, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART, APP_LEVEL_COMPLETE, APP_AD_VIEW | APP_PROMOTION | APP_INSTALL | - | SWIPES, IMPRESSIONS, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART, APP_LEVEL_COMPLETE, APP_ACHIEVEMENT_UNLOCKED, APP_AD_VIEW |
| APP_INSTALL with Dynamic Ads | SWIPES, IMPRESSIONS, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART | APP_PROMOTION | APP_INSTALL with Dynamic Ads | - | SWIPES, IMPRESSIONS, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART, APP_LEVEL_COMPLETE, APP_ACHIEVEMENT_UNLOCKED, APP_AD_VIEW |
| APP_INSTALL with SKAdNetwork enabled | SWIPES, IMPRESSIONS, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART | APP_PROMOTION | APP_INSTALL with SKAdNetwork enable | - | SWIPES, IMPRESSIONS, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART |
| APP_INSTALL with Dynamic Ads and SKAdNetwork enabled | SWIPES, IMPRESSIONS, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART | APP_PROMOTION | APP_INSTALL with Dynamic Ads and SKAdNetwork enabled | - | SWIPES, IMPRESSIONS, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART |
| APP_CONVERSION | SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART, APP_LEVEL_COMPLETE, APP_ACHIEVEMENT_UNLOCKED, APP_AD_VIEW, APP_REENGAGE_PURCHASE, APP_REENGAGE_OPEN LANDING_PAGE_VIEW | APP_PROMOTION | APP_REENGAGEMENT | - | SWIPES, APP_REENGAGE_PURCHASE, APP_REENGAGE_OPEN, LANDING_PAGE_VIEW |
| APP_CONVERSION with Dynamic Ads | SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART | APP_PROMOTION | APP_REENGAGEMENT with Dynamic Ads | - | SWIPES, APP_REENGAGE_PURCHASE, APP_REENGAGE_OPEN, LANDING_PAGE_VIEW |
| APP_CONVERSION with SKAdNetwork enabled | SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART | APP_PROMOTION | APP_REENGAGEMENT with SKAdNetwork enabled | - | SWIPES, LANDING_PAGE_VIEW |
| APP_CONVERSION with Dynamic Ads and SKAdNetwork enabled | SWIPES, APP_INSTALLS, APP_PURCHASE, APP_SIGNUP, APP_ADD_TO_CART | — | — | - | This combination is not available when using objective_v2_type |
| CATALOG_SALES | SWIPES, STORY_OPENS, PIXEL_PURCHASE, PIXEL_ADD_TO_CART, PIXEL_SIGNUP, PIXEL_PAGE_VIEW, PIXEL_PURCHASE_VO, LANDING_PAGE_VIEW | SALES | - | WEB | SWIPES, STORY_OPENS, PIXEL_PURCHASE, PIXEL_SIGNUP, PIXEL_ADD_TO_CART, PIXEL_PAGE_VIEW, LANDING_PAGE_VIEW |
| CATALOG_SALES | IMPRESSIONS, APP_INSTALLS, APP_PURCHASE, APP_ADD_TO_CART, APP_SIGNUP, APP_REENGAGE_PURCHASE, APP_REENGAGE_OPEN | SALES | - | APP | IMPRESSIONS, SWIPES, APP_REENGAGE_PURCHASE APP_REENGAGE_OPEN, |
| CATALOG_SALES with SKAdNetwork enabled | IMPRESSIONS, APP_INSTALLS, APP_PURCHASE, APP_ADD_TO_CART, APP_SIGNUP, APP_REENGAGE_PURCHASE, APP_REENGAGE_OPEN | SALES | - | APP | SKAd Network opted-in IMPRESSIONS, SWIPES, STORY_OPENS |
| CATALOG_SALES | SWIPES, STORY_OPENS, PIXEL_PURCHASE, PIXEL_ADD_TO_CART, PIXEL_SIGNUP, PIXEL_PAGE_VIEW, PIXEL_PURCHASE_VO, LANDING_PAGE_VIEW | SALES | - | WEB | SWIPES, STORY_OPENS, PIXEL_PURCHASE, PIXEL_SIGNUP, PIXEL_ADD_TO_CART, PIXEL_PAGE_VIEW, LANDING_PAGE_VIEW |
| VIDEO_VIEW | IMPRESSIONS, VIDEO_VIEWS, VIDEO_VIEWS_15_SEC | AWARENESS_AND_ENGAGEMENT | - | - | IMPRESSIONS, SWIPES, STORY_OPENS, USES, VIDEO_VIEWS, VIDEO_VIEWS_15_SEC |
| ENGAGEMENT | SWIPES, USES, STORY_OPENS, PIXEL_PURCHASE | AWARENESS_AND_ENGAGEMENT | - | - | IMPRESSIONS, SWIPES, STORY_OPENS, USES, VIDEO_VIEWS, VIDEO_VIEWS_15_SEC |
| WEB_VIEW | SWIPES, PIXEL_PAGE_VIEW, LANDING_PAGE_VIEW | TRAFFIC | - | WEB | SWIPES, PIXEL_PAGE_VIEW, LANDING_PAGE_VIEW |
| APP_REENGAGEMENT | SWIPES, APP_REENGAGE_PURCHASE, APP_REENGAGE_OPEN, LANDING_PAGE_VIEW | TRAFFIC | - | APP | SWIPES, APP_REENGAGE_PURCHASE, APP_REENGAGE_OPEN, LANDING_PAGE_VIEW |
| WEB_VIEW | IMPRESSIONS, SWIPES | TRAFFIC | - | PUBLIC_PROFILE, CALL, TEXT | IMPRESSIONS, SWIPES |
*The objectives PROMOTE_STORIES and PROMOTE_PLACES are generally not available to create via the API.
objective_v2 - API Campaign creation default behaviour
Snap will introduce a translator service which will be used for applications that set only the objective attribute on creation of new Campaign entities. This table outlines the default value that will be set by our translator service for applications that have not yet adopted the use of objective_v2_properties by the 21 March 2025.
| objective | objective_v2_type |
|---|---|
| PROMOTED_PLACES | AWARENESS_AND_ENGAGEMENT |
| PROMOTE_STORIES | AWARENESS_AND_ENGAGEMENT |
| BRAND_AWARENESS | AWARENESS_AND_ENGAGEMENT |
| APP_REENGAGEMENT | TRAFFIC |
| WEB_VIEW | TRAFFIC |
| CATALOG_SALES | SALES |
| APP_INSTALL | APP_PROMOTION |
| APP_CONVERSION | APP_PROMOTION |
| WEB_CONVERSION | SALES |
| LEAD_GENERATION | LEADS |
| ENGAGEMENT | AWARENESS_AND_ENGAGEMENT |
| VIDEO_VIEW | TRAFFIC |
Smart Budgets
The Smart Budgets product allows advertisers to move budget control from the Ad Squad level to the Campaign level, allowing budgets to be moved between Ad Squads dynamically based on where performance will be strongest.
Smart Budget - Campaign level settings
When the pacing is set at Campaign level (“pacing_level”:”CAMPAIGN”) the attribute shared_properties is required on the Campaign and the exact values defined within it need to be mirrored in all Ad Squads that are added to the Campaign.
The Daily budget (daily_budget_micro) is the only allowed way to budget a Smart Budget Campaign, lifetime budget (lifetime_budget_micro) will be rejected. Smart Budgets cannot be used with Dynamic Ads.
| Attribute | Description | Required | Possible Values |
|---|---|---|---|
| pacing_level | Defines the entity that sets the pacing | R | CAMPAIGN |
| shared_properties | R | ||
| buy_model | R | AUCTION | |
| daily_budget_micro | R |
shared_properties
| Attribute | Description | Required | Possible Values |
|---|---|---|---|
| shared_conversion_location | O | APP, WEB, CALL, TEXT, LEAD_FORM | |
| shared_conversion_window | When used, all Ad Squads under the Campaign need to match their conversion_window to this value | O | Dependent on the bid_strategy selection - see validations below |
| shared_optimization_goal | When used, all Ad Squads under the Campaign need to match their optimization_goal to this value. | R | Dependent on the bid_strategy selection - see validations below |
| shared_ad_squad_bid_strategy | When used all Ad Squads under the Campaign needs to match their bid_strategy to this value | R | AUTOBID, , LOWEST_COST_WITH_MAX_BID |
| target_cost_in_micro | O | ||
| shared_pixel_id | When used, all Ad Squads under the Campaign need to use this Pixel ID. | Required if shared_optimization_goal is PIXEL_PURCHASE | Pixel ID that is accessible to the Ad Account |
Validations
These are the allowed combinations for the Ad Squads that form part of a Smart Budgets set up, these need to be present both in the Campaign shared_properties and in the Ad Squads.
| shared_ad_squad_bid_strategy | shared_optimization_goal | target_cost_in_micro | shared_conversion_window |
|---|---|---|---|
| AUTOBID | IMPRESSIONS | - | - |
| AUTOBID | PIXEL_PURCHASE | - | As per mapping optimization_goal - conversion_window |
| LOWEST_COST_WITH_MAX_BID | IMPRESSIONS | - | - |
| LOWEST_COST_WITH_MAX_BID | PIXEL_PURCHASE | - | As per mapping optimization_goal - conversion_window |
Smart Budgets - Ad Squad level Attributes
All Ad Squads under the Campaign need to mirror the settings found in the Campaign shared_properties.
| Attribute | Description | Required | Possible Values |
|---|---|---|---|
| optimization_goal | The optimization_goal needs to match the value found in shared_optimization_goal under the Campaign shared_properties | R | PIXEL_PURCHASE, IMPRESSIONS |
| conversion_window | Needs to match the value found in shared_properties on the Campaign level | R | SWIPE_28DAY_VIEW_1DAY, SWIPE_7DAY |
| bid_strategy | The bid_strategy needs to match the value found in shared_ad_squad_bid_strategy under the Campaign shared_properties | R | AUTO_BID, LOWEST_COST_WITH_MAX_BID |
| placement_v2 | R | ||
| pacing_type | Cannot be ACCELERATED | O | STANDARD |
| type | R | SNAP_ADS |
Snap Ads Manager - Business logic
The following logic is used in Snap Ads Manager to present the user with the combinations that are available when setting up a Campaign, Ad Squad and Ads, this is useful if you wish to mimic the same user journey in your own application.
| Campaign - objective_v2_type | optimization_goal | bid_strategy | conversion_window | pixel_id | conversion_location |
|---|---|---|---|---|---|
| AWARENESS_AND_ENGAGEMENT | IMPRESSIONS | AUTO_BID | - | - | WEB |
| AWARENESS_AND_ENGAGEMENT | IMPRESSIONS | LOWEST_COST_WITH_MAX_BID | - | - | WEB |
| APP_PROMOTION | IMPRESSIONS | AUTO_BID | - | - | APP |
| APP_PROMOTION | IMPRESSIONS | LOWEST_COST_WITH_MAX_BID | - | - | APP |
| SALES | PIXEL_PURCHASE | AUTO_BID | *SWIPE_28DAY_VIEW_1DAY, SWIPE_7DAY | Pixel ID attached to Ad Squads | WEB |
| SALES | PIXEL_PURCHASE | LOWEST_COST_WITH_MAX_BID | *SWIPE_28DAY_VIEW_1DAY, SWIPE_7DAY | Pixel ID attached to Ad Squads | WEB |
*Use the Pixel eligibility endpoint along with Snap Pixel ID to check valid conversion_window options.
Example 1 - Smart Budget Campaign using IMPRESSIONS
The pacing_level is set at the Campaign level, the shared_properties are set to enforce the values at the Ad Squad level.
"campaign": {
"id": "535d4b97-5aad-4fcd-aefc-29866a697ae5",
"updated_at": "2025-11-07T11:00:35.599Z",
"created_at": "2025-11-07T11:00:35.577Z",
"name": "App promotion",
"ad_account_id": "adfc23e9-627d-46a5-a53c-98bde82bae21",
"daily_budget_micro": 50000000,
"status": "ACTIVE",
"objective": "APP_PROMOTION",
"measurement_spec": {
"ios_app_id": "6502670261",
"android_app_url": "com.snap.spectacles.app"
},
"start_time": "2025-11-07T10:53:56.017Z",
"buy_model": "AUCTION",
"objective_v2_properties": {
"objective_v2_type": "APP_PROMOTION",
"promotion_type": "APP_INSTALL"
},
"pacing_level": "CAMPAIGN",
"shared_properties": {
"shared_optimization_goal": "IMPRESSIONS",
"shared_ad_squad_bid_strategy": "LOWEST_COST_WITH_MAX_BID",
}
}
Example 1 - Smart Budget Ad Squad using IMPRESSIONS
The Ad Squad mirrors the values for optimization_ goal and bid_strategy found in the Campaign shared_properties.
"adsquad": {
"id": "4cd00032-9ddd-49bb-808e-850c35b7406e",
"updated_at": "2025-11-07T11:00:36.953Z",
"created_at": "2025-11-07T11:00:36.896Z",
"name": "United Kingdom, All genders and All ages",
"status": "ACTIVE",
"campaign_id": "535d4b97-5aad-4fcd-aefc-29866a697ae5",
"type": "SNAP_ADS",
"targeting": {
"regulated_content": false,
"geos": [
{
"country_code": "uk",
"operation": "INCLUDE"
}
],
"enable_targeting_expansion": true,
"auto_expansion_options": {
"interest_expansion_option": {
"enabled": true
},
"custom_audience_expansion_option": {
"enabled": true
}
}
},
"targeting_reach_status": "VALID",
"placement_v2": {
"config": "AUTOMATIC"
},
"bid_micro": 2000000,
"bid_strategy": "LOWEST_COST_WITH_MAX_BID",
"daily_budget_micro": 50000000,
"start_time": "2025-11-07T10:53:56.017Z",
"optimization_goal": "IMPRESSIONS",
"delivery_constraint": "DAILY_BUDGET",
"pacing_type": "STANDARD",
"brand_safety_config": {
"inventory_option": "FULL_INVENTORY"
}
}
Example 2 - Smart Budget Campaign using PIXEL_PURCHASE
The pacing_level is set at the Campaign level, the shared_properties are set to enforce the values at the Ad Squad level.
Since the optimization goal is set to PIXEL_PURCHASE the shared_properties includes shared_pixel_id and shared_conversion_window, the conversion window options are determined by the Pixel eligibility endpoint.
"campaign": {
"id": "c0f1f2b9-5729-4753-bd67-5945df0fea5c",
"updated_at": "2025-11-07T10:53:27.644Z",
"created_at": "2025-11-07T10:52:54.622Z",
"name": "Sales - Smart Budget",
"ad_account_id": "adfc23e9-627d-46a5-a53c-98bde82bae21",
"daily_budget_micro": 50000000,
"status": "ACTIVE",
"objective": "SALES",
"start_time": "2025-11-07T10:49:09.403Z",
"buy_model": "AUCTION",
"regulations": {
"restricted_delivery_signals": false
},
"creation_state": "PUBLISHED",
"objective_v2_properties": {
"objective_v2_type": "SALES"
},
"pacing_level": "CAMPAIGN",
"shared_properties": {
"shared_conversion_location": "WEB",
"shared_conversion_window": "SWIPE_28DAY_VIEW_1DAY",
"shared_optimization_goal": "PIXEL_PURCHASE",
"shared_ad_squad_bid_strategy": "AUTO_BID",
"shared_pixel_id": "f1b73786-8828-4fc1-803f-4f5af6d9082b"
}
}
}
Example 2 - Smart Budget Ad Squad using PIXEL_PURCHASE
The Ad Squad mirrors the values for optimization_ goal, bid_strategy, conversion_window and pixel_id found in the Campaign shared_properties.
"adsquad": {
"id": "553979ad-a419-4787-a1f1-4dde7f5a1483",
"updated_at": "2025-11-07T10:52:55.844Z",
"created_at": "2025-11-07T10:52:55.812Z",
"name": "United Kingdom, All genders and All ages",
"status": "ACTIVE",
"campaign_id": "c0f1f2b9-5729-4753-bd67-5945df0fea5c",
"type": "SNAP_ADS",
"targeting": {
"regulated_content": false,
"geos": [
{
"country_code": "uk",
"operation": "INCLUDE"
}
],
"enable_targeting_expansion": true,
"auto_expansion_options": {
"interest_expansion_option": {
"enabled": true
},
"custom_audience_expansion_option": {
"enabled": true
}
}
},
"targeting_reach_status": "VALID",
"placement_v2": {
"config": "AUTOMATIC"
},
"bid_strategy": "AUTO_BID",
"daily_budget_micro": 50000000,
"start_time": "2025-11-07T10:49:09.403Z",
"optimization_goal": "PIXEL_PURCHASE",
"conversion_window": "SWIPE_28DAY_VIEW_1DAY",
"pixel_id": "f1b73786-8828-4fc1-803f-4f5af6d9082b",
"delivery_constraint": "DAILY_BUDGET",
"pacing_type": "STANDARD",
"brand_safety_config": {
"inventory_option": "FULL_INVENTORY"
}
}
Create a Campaign
This endpoint will create a campaign within a specified ad account.
HTTP Request
POST https://adsapi.snapchat.com/v1/adaccounts/{ad_account_id}/campaigns
Parameters
| Parameter | Default | Description |
|---|---|---|
| ad_account_id | Ad Account ID |
Example - Create a Campaign
curl -X POST \
-H "Authorization: Bearer meowmeowmeow" \
-H "Content-Type: application/json" \
-d '{"campaigns":[{"name":"Badger Tunneling Campaign","ad_account_id":"22225ba6-7559-4000-9663-bace8adff5f2","status":"ACTIVE","start_time":"2025-11-22T21:42:02.392Z","buy_model":"AUCTION","creation_state":"PUBLISHED","objective_v2_properties":{"objective_v2_type":"AWARENESS_AND_ENGAGEMENT"}}]}' \
"https://adsapi.snapchat.com/v1/adaccounts/{ad_acount_id}/campaigns"
The above command returns JSON structured like this:
{
"request_status": "SUCCESS",
"request_id": "80366bda-cf18-4969-bf91-843930b9790c",
"campaigns": [
{
"sub_request_status": "SUCCESS",
"campaign": {
"id": "7c074b60-3ae7-4975-bc1d-5785cc0be2c8",
"updated_at": "2025-10-17T20:14:57.012Z",
"created_at": "2025-10-17T20:14:57.012Z",
"name": "Badger Tunneling Campaign",
"ad_account_id": "22225ba6-7559-4000-9663-bace8adff5f2",
"status": "ACTIVE",
"objective": "BRAND_AWARENESS",
"start_time": "2025-11-22T21:42:02.392Z",
"buy_model": "AUCTION",
"delivery_status": [
"INVALID_START_TIME_AFTER_END_TIME",
"INVALID_START_TIME"
],
"creation_state": "PUBLISHED",
"objective_v2_properties": {
"objective_v2_type": "AWARENESS_AND_ENGAGEMENT"
},
"pacing_properties_version": 0
}
}
]
}
Update a Campaign
This endpoint will update a specified campaign.
Attributes that can be updated
| Attribute | Description | Required | Possible Values |
|---|---|---|---|
| end_time | End time | O | |
| name | Campaign name | R | |
| daily_budget_micro | Daily Spend Cap (micro-currency) | O | |
| lifetime_spend_cap_micro | Lifetime spend cap for the campaign (micro-currency) | O | |
| start_time | Start time | O | |
| status | Campaign status | R | ACTIVE, PAUSED |
HTTP Request
PUT https://adsapi.snapchat.com/v1/adaccounts/{ad_account_id}/campaigns
Parameters
| Parameter | Default | Description |
|---|---|---|
| ad_account_id | Ad Account ID |
Example - Update a Campaign
curl -X PUT \
-H "Authorization: Bearer meowmeowmeow" \
-H "Content-Type: application/json" \
-d '{"campaigns": [{"id":"7c074b60-3ae7-4975-bc1d-5785cc0be2c8","name":"Badger Tunneling Campaign","ad_account_id":"22225ba6-7559-4000-9663-bace8adff5f2","status":"PAUSED","objective":"BRAND_AWARENESS","start_time":"2025-11-20T21:45:00","end_time":"2025-11-25T21:45:00","buy_model":"AUCTION","objective_v2_properties":{"objective_v2_type":"AWARENESS_AND_ENGAGEMENT"}}]}'
https://adsapi.snapchat.com/v1/adaccounts/22225ba6-7559-4000-9663-bace8adff5f2/campaigns
The above command returns JSON structured like this:
{
"request_status": "SUCCESS",
"request_id": "a848b598-58cf-44a6-b568-c9ef86876499",
"campaigns": [
{
"sub_request_status": "SUCCESS",
"campaign": {
"id": "7c074b60-3ae7-4975-bc1d-5785cc0be2c8",
"updated_at": "2025-10-19T20:25:27.080Z",
"created_at": "2025-10-17T20:14:57.012Z",
"name": "Badger Tunneling Campaign",
"ad_account_id": "22225ba6-7559-4000-9663-bace8adff5f2",
"status": "PAUSED",
"objective": "BRAND_AWARENESS",
"start_time": "2025-11-20T21:45:00.000Z",
"end_time": "2025-11-25T21:45:00.000Z",
"buy_model": "AUCTION",
"delivery_status": [
"INVALID_START_TIME",
"INVALID_NOT_ACTIVE",
"INVALID_NOT_EFFECTIVE_ACTIVE"
],
"creation_state": "PUBLISHED",
"objective_v2_properties": {
"objective_v2_type": "AWARENESS_AND_ENGAGEMENT"
},
"pacing_properties_version": 0
}
}
]
}
Fetch all Campaigns under an Ad Account
This endpoint retrieves all Campaigns within a specified ad account, the returned Campaigns can be sorted either in the order they were created or by when they were last updated.
HTTP Request
GET https://adsapi.snapchat.com/v1/adaccounts/{ad_account_id}/campaigns
Parameters
| Parameter | Possible values | Description |
|---|---|---|
| ad_account_id | Ad Account ID | |
| limit | 50-1000 | Parameter for pagination, sets the number of Campaigns returned per page |
| sort | updated_at-desc, created_at-desc | optional parameter, sorts the resulting Campaigns in descending order, either by when they were last updated or by when they were created, this parameter can be combined with limit, but cannot be combined with read_deleted_entities |
| read_deleted_entities | true | optional parameter, this param will return the deleted attribute on deleted Campaign entities |
Example - Fetch all Campaigns under an Ad Account
This request fetches Campaigns returned in the order from when they were last updated.
curl "https://adsapi.snapchat.comv1/adaccounts/22225ba6-7559-4000-9663-bace8adff5f2/campaigns?limit=100&sort=updated_at-desc" \
-H "Authorization: Bearer meowmeowmeow"
The above command returns JSON structured like this:
{
"request_status": "SUCCESS",
"request_id": "b1c56bf8-ab79-496d-8084-efc322a94172",
"paging": {
"next_link": "https://adsapi.snapchat.com/v1/adaccounts/22225ba6-7559-4000-9663-bace8adff5f2/campaigns?cursor=Q2FtcGFpZ25zLzE3ODdjNWRjLTYzOGUtNGJlNS05MTVkLTI5MGU1ZjFhZWVkMQ&limit=100&sort=updated_at-desc"
},
"campaigns": [
{
"sub_request_status": "SUCCESS",
"campaign": {
"id": "c6a9e09a-7126-48e1-96e0-4dbf9ab8d3c2",
"updated_at": "2024-11-14T19:31:07.019Z",
"created_at": "2024-11-14T19:31:07.019Z",
"name": "App Conversions - Porcupines",
"ad_account_id": "62225ba6-7559-4000-9663-bace8adff5f2",
"status": "ACTIVE",
"objective": "APP_CONVERSION",
"start_time": "2024-11-14T19:11:29.593Z",
"buy_model": "AUCTION",
"delivery_status": [
"INVALID_UNKNOWN"
],
"creation_state": "PUBLISHED",
"objective_v2_properties": {
"objective_v2_type": "APP_PROMOTION",
"is_auto_generated": true
},
"pacing_properties_version": 0
}
},
{
"sub_request_status": "SUCCESS",
"campaign": {
"id": "11162f29-85c7-4d43-a037-62d540487e29",
"updated_at": "2024-11-11T15:14:34.196Z",
"created_at": "2024-11-11T12:44:10.887Z",
"name": "Hunter Frogs DPA - Sales",
"ad_account_id": "62225ba6-7559-4000-9663-bace8adff5f2",
"status": "ACTIVE",
"objective": "CATALOG_SALES",
"start_time": "2024-11-11T12:41:09.808Z",
"buy_model": "AUCTION",
"product_properties": {
"catalog_id": "85b39b4d-8b29-4309-959c-75a3cbbdcd5b"
},
"delivery_status": [
"INVALID_UNKNOWN"
],
"creation_state": "PUBLISHED",
"objective_v2_properties": {
"objective_v2_type": "SALES"
},
"pacing_properties_version": 0
}
},
{
"sub_request_status": "SUCCESS",
"campaign": {
"id": "cfd35139-35ae-4294-bd58-968ab80d9dc5",
"updated_at": "2024-11-11T12:46:59.477Z",
"created_at": "2024-11-11T12:46:59.477Z",
"name": "New DPA Campaign - Pugs",
"ad_account_id": "62225ba6-7559-4000-9663-bace8adff5f2",
"status": "ACTIVE",
"objective": "CATALOG_SALES",
"start_time": "2024-11-11T12:46:34.305Z",
"buy_model": "AUCTION",
"product_properties": {
"catalog_id": "85b39b4d-8b29-4309-959c-75a3cbbdcd5b"
},
"delivery_status": [
"INVALID_UNKNOWN"
],
"creation_state": "PUBLISHED",
"objective_v2_properties": {
"objective_v2_type": "SALES"
},
"pacing_properties_version": 0
}
},
[[[ snip ]]]
{
"sub_request_status": "SUCCESS",
"campaign": {
"id": "46fb184a-d371-49f0-8384-ea533cef217a",
"updated_at": "2024-11-08T16:53:54.664Z",
"created_at": "2021-01-06T10:07:18.915Z",
"name": "App Install - Badger Campaign",
"ad_account_id": "62225ba6-7559-4000-9663-bace8adff5f2",
"status": "PAUSED",
"objective": "APP_INSTALL",
"measurement_spec": {
"ios_app_id": "324684580",
"android_app_url": "com.spotify.music"
},
"start_time": "2021-01-06T10:07:14.431Z",
"buy_model": "AUCTION",
"delivery_status": [
"INVALID_NOT_ACTIVE",
"INVALID_NOT_EFFECTIVE_ACTIVE"
],
"creation_state": "PUBLISHED",
"objective_v2_properties": {
"objective_v2_type": "APP_PROMOTION",
"is_auto_generated": true
},
"pacing_properties_version": 0
}
},
{
"sub_request_status": "SUCCESS",
"campaign": {
"id": "1787c5dc-638e-4be5-915d-290e5f1aeed1",
"updated_at": "2024-11-08T11:14:21.140Z",
"created_at": "2024-11-08T11:14:21.140Z",
"name": "App installs - SKAd - Honeybear",
"ad_account_id": "62225ba6-7559-4000-9663-bace8adff5f2",
"status": "ACTIVE",
"objective": "APP_INSTALL",
"measurement_spec": {
"ios_app_id": "447188370"
},
"start_time": "2024-11-08T11:13:09.976Z",
"buy_model": "AUCTION",
"delivery_status": [
"INVALID_UNKNOWN"
],
"creation_state": "PUBLISHED",
"objective_v2_properties": {
"objective_v2_type": "APP_PROMOTION",
"is_auto_generated": true
},
"pacing_properties_version": 0
}
}
]
}
Get a specific Campaign
This endpoint retrieves a specific campaign.
HTTP Request
GET https://adsapi.snapchat.com/v1/campaigns/{campaign_id}
URL Parameters
| Parameter | Default | Description |
|---|---|---|
| campaign_id | Campaign ID | |
| read_deleted_entities | true | optional parameter, this param will return the deleted attribute on deleted Campaign entities |
Example - Get a specific Campaign
curl "https://adsapi.snapchat.com/v1/campaigns/92e1c28a-a331-45b4-8c26-fd3e0eea8c39" \
-H "Authorization: Bearer meowmeowmeow"
The above command returns JSON structured like this:
{
"request_status": "success",
"request_id": "57b0049c00ff0e8cb21af5199c0001737e616473617069736300016275696c642d35396264653638322d312d31312d3700010107",
"campaigns": [
{
"sub_request_status": "success",
"campaign": {
"id": "92e1c28a-a331-45b4-8c26-fd3e0eea8c39",
"updated_at": "2025-11-14T19:31:07.019Z",
"created_at": "2025-11-14T19:31:07.019Z",
"name": "App Conversions - Porcupines",
"ad_account_id": "62225ba6-7559-4000-9663-bace8adff5f2",
"status": "ACTIVE",
"objective": "APP_CONVERSION",
"start_time": "2025-11-17T19:11:29.593Z",
"buy_model": "AUCTION",
"delivery_status": ["DELIVERING"],
"creation_state": "PUBLISHED",
"objective_v2_properties": {
"objective_v2_type": "APP_PROMOTION",
"is_auto_generated": true
},
"pacing_properties_version": 0
}
}
]
}
Delete a Specific Campaign
curl -X DELETE "https://adsapi.snapchat.com/v1/campaigns/92e1c28a-a331-45b4-8c26-fd3e0eea8c39" \
-H "Authorization: Bearer meowmeowmeow"
The above command returns JSON structured like this:
{
"request_status": "success",
"request_id": "57b004dc00ff0e29c26b5d51840001737e616473617069736300016275696c642d35396264653638322d312d31312d3700010106",
"campaigns": []
}
This endpoint deletes a specific campaign.
HTTP Request
DELETE https://adsapi.snapchat.com/v1/campaigns/<ID>
URL Parameters
| Parameter | Description |
|---|---|
| ID | The ID of the campaign to delete |