Skip to main content

Reach and Frequency Guide

Reach and Frequency buying allows advertisers to purchase reach-optimized campaigns via the API. This feature is currently in beta and available on a whitelist basis only. Please contact your Snap Account Manager to setup access.

Create R&F Campaign

  • Campaign status must be set to 'ACTIVE'
  • buy_model must be set to 'RESERVED'
  • objective must be set to 'BRAND_AWARENESS'
curl -X POST \
-H "Authorization: Bearer meowmeowmeow" \
-H "Content-Type: application/json" \
-d '{"campaigns": [{"name": "Audience Filter Campaign", "ad_account_id": "3b0fbace-04b4-4f04-a425-33b5e0af1dab", "status": "ACTIVE", "start_time": "2018-08-11T22:00:00.000Z", "buy_model": "RESERVED", "objective": "BRAND_AWARENESS"}]}' \
"https://adsapi.snapchat.com/v1/adaccounts/3b0fbace-04b4-4f04-a425-33b5e0af1dab/campaigns"

The above command returns JSON structured like this:

{
"request_status": "success",
"request_id": "57b002ad00ff07e1f50fd2267f0001737e616473617069736300016275696c642d35396264653638322d312d31312d370001010d",
"campaigns": [
{
"sub_request_status": "success",
"campaign": {
"id": "92e1c28a-a331-45b4-8c26-fd3e0eea8c39",
"updated_at": "2016-08-14T05:33:33.876Z",
"created_at": "2016-08-14T05:33:33.876Z",
"name": "Audience Filter Campaign",
"ad_account_id": "3b0fbace-04b4-4f04-a425-33b5e0af1dab",
"status": "ACTIVE",
"start_time": "2018-08-11T22:00:00.000Z",
"objective": "BRAND_AWARENESS",
"buy_model": "RESERVED"
}
}
]
}

This will create a campaign within a specified ad account. Once a R&F campaign is booked we do not allow for edits to the campaign or ad squad. Edits, or a re-booking, is only allowed if the initial booking fails.

Re-booking is done only if your initial R&F Ad Squad booking request is FAILED. In addition, we reserve the right to remove any advertiser from the R&F program if we see an excessive number of cancellations.

HTTP Request

POST https://adsapi.snapchat.com/v1/adaccounts/{ad_account_id}/campaigns

Parameters

ParameterDefaultDescription
ad_account_idAd Account ID

Create a Forecasting Request

Before creating the Reach & Frequency Ad Squad you will need to make a forecasting request using the Ad Squad with the placement, targeting spec and frequency cap that you wish to use.

The forecasting request will return a reach curve showing the estimated reach based on your targeting and which budget you need to apply for a certain estimated reach.

  • Reach & Frequency Lenses and Single Image and Video ads are currently available in the Australia, Belgium, Brazil, Canada, Denmark, France, Germany, India, Ireland, Italy, Kuwait, Mexico, Netherlands, Norway, Saudi Arabia, Spain, Sweden, UAE, UK, and US.
  • Minimum reach of at least 500,000 unique users.
  • Booking / Set-Up Timing: No less than 12 hours in advance and no greater than 365 days from current time.
  • Radius targeting and LOI targeting are not permitted.
  • Customer List targeting is allowed but dependent on Customer List segments being available for forecasting.
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer meowmeowmeow" \
-d '{"placement_v2":{"config":"AUTOMATIC"},"targeting":{"geos":[{"country_code":"us"}],"demographics":[{"gender":"MALE"}]},"delivery_constraint":"REACH_AND_FREQUENCY","start_time":"2020-08-28T14:08:04+01:00","end_time":"2020-09-29T14:08:04+01:00","optimization_goal":"VIDEO_VIEWS","cap_and_exclusion_config":{"frequency_cap_config":[{"frequency_cap_count":1,"frequency_cap_type":"IMPRESSIONS","time_interval":7,"frequency_cap_interval":"DAYS"}]}}' \
"https://adsapi.snapchat.com/v1/adaccounts/3b0fbace-04b4-4f04-a425-33b5e0af1dab/reserved_forecasting"

The above command returns JSON structured like this:

{
"request_status": "SUCCESS",
"request_id": "5b3e5c9600ff0675dc615cb9090001737e616473617069736300016275696c642d31346237626365612d312d3138312d300001010b",
"reach_frequency_curve": [
{
"impression": 254240,
"reach": 250320,
"budget_micro": 610557576
},
{
"impression": 1300320,
"reach": 1211840,
"budget_micro": 3121198726
},
// snip
{
"impression": 102770081,
"reach": 29095360,
"budget_micro": 729561535468
},
{
"impression": 104879041,
"reach": 29445920,
"budget_micro": 847933759640
}
],
"display_message": "",
"debug_message": "",
}
}

Required Ad Squad attributes - Forecasting request

AttributeDescriptionPossible Values
placement_v2Placement for the AdsPlacement V2
targetingTargeting of the AdsTargeting Spec
delivery_constraintREACH_AND_FREQUENCY
start_timeStart time
end_timeEnd time
typeAd Squad typeSNAP_ADS, LENS
optimization_goalOptimization Goal based on Ad Squad typeFor SNAP_ADS the optimization_goal has to be VIDEO_VIEWS, for LENS the optimization_goal has to be USES
cap_and_exclusion_configFrequency Cap Spec

HTTP Request

POST https://adsapi.snapchat.com/v1/adaccounts/{ad_account_id}/reserved_forecasting

Parameters

ParameterDefaultDescription
ad_account_idAd Account ID

Create R&F Ad Squad

When creating the Reach & Frequency ad squad you should use the same Ad Squad values used in the Forecast request for Placement V2, targeting and frequency cap. Additionally you should also use the values impression, reach and budget_micro returned in the forecast.

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer meowmeowmeow" \
-d '{"adsquads": [{"name": "Snap Ad, United States, All Genders, All Ages", "placement_v2": {"config": "AUTOMATIC"}, "start_time": "2018-07-08T15:13:36-07:00", "end_time": "2018-08-07T15:13:36-07:00", "delivery_constraint": "REACH_AND_FREQUENCY", "pixel_id": null, "campaign_id": "319bcd47-3d99-4d3b-a39a-33c3fbea470b", "daily_budget_micro": null, "targeting": {"geos": [{"country_code": "us"}]}, "cap_and_exclusion_config": {"frequency_cap_config": [{"frequency_cap_count": 2, "time_interval": 7, "frequency_cap_interval": "DAYS", "frequency_cap_type": "IMPRESSIONS"}]},"type": "SNAP_ADS", "conversion_window": null, "status": "ACTIVE", "auto_bid": false, "optimization_goal": "VIDEO_VIEWS", "reach_goal": 39084400, "impression_goal": 132528801, "lifetime_budget_micro": 484048584430, "reach_and_frequency_status": "PENDING"}]}' \
https://adsapi.snapchat.com/v1/campaigns/a09f983a-06ac-4081-9659-7bc9e1cd6888/adsquads

The above command returns JSON structured like this:

{
"request_status": "SUCCESS",
"request_id": "5b3e983d00ff059adbd17a39bd0001737e7465616d6b6f363139000161646d616e616765722d6170693a6275696c642d31623031633134632d312d3138322d3000010116",
"adsquads": [
{
"sub_request_status": "SUCCESS",
"adsquad": {
"id": "5fd79efb-e544-4d43-9e59-9e6a88f8232e",
"updated_at": "2018-07-05T22:14:21.824Z",
"created_at": "2018-07-05T22:14:21.824Z",
"name": "Snap Ad, United States, All Genders, All Ages",
"status": "ACTIVE",
"campaign_id": "319bcd47-3d99-4d3b-a39a-33c3fbea470b",
"type": "SNAP_ADS",
"targeting": {
"regulated_content": false,
"geos": [
{
"country_code": "us"
}
]
},
"placement_v2": {
"config": "AUTOMATIC"
},
"billing_event": "IMPRESSION",
"auto_bid": false,
"lifetime_budget_micro": 484048584430,
"start_time": "2018-07-08T22:13:36.000Z",
"end_time": "2018-08-07T22:13:36.000Z",
"optimization_goal": "VIDEO_VIEWS",
"impression_goal": 132528801,
"reach_goal": 39084400,
"cap_and_exclusion_config": {
"frequency_cap_config": [
{
"frequency_cap_count": 2,
"frequency_cap_type": "IMPRESSIONS",
"time_interval": 7,
"frequency_cap_interval": "DAYS"
}
],
"is_industry_exclusive": false,
"is_industry_competitively_separated": false
},
"delivery_constraint": "REACH_AND_FREQUENCY",
// Will automatically update to ACTIVE or FAILED
"reach_and_frequency_status": "PENDING",
"reach_and_frequency_rate_micro": 3652402
}
}
]
}

This creates an Ad Squad within a Campaign. For R&F Ad Squads there can only be one Ad Squad under a Campaign.

Attributes for R&F Ad Squad

AttributeDescriptionRequiredPossible Values
campaign_idCampaign IDR
bid_microMax Bid (micro-currency)Must not be included
billing_eventBilling EventRIMPRESSION
daily_budget_microDaily Budget (micro-currency)RMust be set to null
start_timeStart timeRMust be greater than or equal to 2 days and less than or equal to 90 days from current time
end_timeEnd timeRDIfference between end_time and start_time must be greater than or equal to 3 days and less than or equal to 90 days
nameAd Squad nameR
optimization_goalOptimization GoalRMust be set to VIDEO_VIEWS (Optimizes for Reach and Frequency) for Snap Ads, or USES for Lenses
placement_v2PlacementRJson object containing advanced placement options See placement_v2
statusAd Squad statusRMust be set to ACTIVE
targetingTargeting specR
typeAd Squad TypeRSNAP_ADS, LENS
included_content_typesContent Type to be includedONEWS, ENTERTAINMENT, SCIENCE_TECHNOLOGY, BEAUTY_FASHION, MENS_LIFESTYLE, WOMENS_LIFESTYLE, GENERAL_LIFESTYLE, FOOD, SPORTS, YOUNG_BOLD
excluded_content_typesContent Type to be excludedONEWS, ENTERTAINMENT, SCIENCE_TECHNOLOGY, BEAUTY_FASHION, MENS_LIFESTYLE, WOMENS_LIFESTYLE, GENERAL_LIFESTYLE, FOOD, SPORTS, YOUNG_BOLD
cap_and_exclusion_configThe frequency cap and exclusion specR
lifetime_budget_microLifetime budget (micro-currency)RMust match the desired budget value defined as budget_micro in the forecasting request
reach_goalReach goal as specified in the Forecasting requestRMust match the reach value in the forecasting request
impression_goalImpression goal as specified in the Forecasting requestRMust match the impression value in the forecasting request
ad_scheduling_configThe schedule for running adsN/AShould not be set
auto_bidAllow Snapchat to automatically set the bid to recommended amountRMust be set to false
target_bidAllows Snapchat to adjust the bid aiming to keep your average CPA at or below the amount set by the ad set end dateRMust be set to false
pixel_idPixel to be associated with the Ad SquadO
delivery_constraintType of deliveryRREACH_AND_FREQUENCY
reach_and_frequency_statusStatus of the reach and frequency bookingRMust be set to PENDING which automatically updates to ACTIVE or FAILED after booking

HTTP Request

POST https://adsapi.snapchat.com/v1/campaigns/{campaign_id}/adsquads

Parameters

ParameterDefaultDescription
campaign_idCampaign ID

Updating R&F Ad Squads and Rebooking

Once you create an AdSquad the reach_and_frequency_status will be PENDING. This will be automatically updated to ACTIVE or FAILED by our booking service within a minute. If it is FAILED, you can rebook with the same Ad Squad by doing an UPDATE on the AdSquad.

You would issue a new Forecasting Request and then update the Ad Squad, providing the ID, while setting the reach_and_frequency_status from FAILED to PENDING, passing new impression_goal, reach_goal, and lifetime_budget_micro values from the forecast.

curl -X PUT \
-H "Authorization: Bearer meowmeowmeow" \
-H "Content-Type: application/json" \
-d '{"adsquads": [{"id": "39df6afb-fbea-4a9d-8b5e-8899ab4f4890", "name": "Snap Ad, United States, All Genders, All Ages", "type": "SNAP_AD", "status": "ACTIVE", "campaign_id": "cfeb4b9c-8464-4498-9906-b4eb2d6c56ac", "placement_v2": {"config": "AUTOMATIC"}, "auto_bid": false, "lifetime_budget_micro": 200000000000, "optimization_goal": "VIDEO_VIEWS", "targeting": {"geos": [{"operation": "INCLUDE", "country_code": "us"}], "regulated_content": false}, "start_time": "2018-07-08T15:13:36-07:00", "end_time": "2018-08-07T15:13:36-07:00", "cap_and_exclusion_config": {"frequency_cap_config": [{"frequency_cap_count": 4, "time_interval": 7, "frequency_cap_interval": "DAYS", "frequency_cap_type": "IMPRESSIONS"}]}, "delivery_constraint": "REACH_AND_FREQUENCY", "reach_goal": 2263600, "lifetime_budget_micro": 200000000000, "impression_goal": 13975600, "reach_and_frequency_status": "PENDING"}]}'
https://adsapi.snapchat.com/v1/campaigns/cfeb4b9c-8464-4498-9906-b4eb2d6c56ac/adsquads

The above command returns JSON structured like this:

{
"request_status": "SUCCESS",
"request_id": "5b3e983d00ff059adbd17a39bd0001737e7465616d6b6f363139000161646d616e616765722d6170693a6275696c642d31623031633134632d312d3138322d3000010116",
"adsquads": [
{
"sub_request_status": "SUCCESS",
"adsquad": {
"id": "5fd79efb-e544-4d43-9e59-9e6a88f8232e",
"updated_at": "2018-07-05T22:14:21.824Z",
"created_at": "2018-07-05T22:14:21.824Z",
"name": "Snap Ad, United States, All Genders, All Ages",
"status": "ACTIVE",
"campaign_id": "319bcd47-3d99-4d3b-a39a-33c3fbea470b",
"type": "SNAP_ADS",
"targeting": {
"regulated_content": false,
"geos": [
{
"country_code": "us"
}
]
},
"placement_v2": {
"config": "AUTOMATIC"
},
"billing_event": "IMPRESSION",
"auto_bid": false,
"lifetime_budget_micro": 200000000000,
"start_time": "2018-07-08T22:13:36.000Z",
"end_time": "2018-08-07T22:13:36.000Z",
"optimization_goal": "VIDEO_VIEWS",
"impression_goal": 13975600,
"reach_goal": 2263600,
"cap_and_exclusion_config": {
"frequency_cap_config": [
{
"frequency_cap_count": 4,
"frequency_cap_type": "IMPRESSIONS",
"time_interval": 7,
"frequency_cap_interval": "DAYS"
}
],
"is_industry_exclusive": false,
"is_industry_competitively_separated": false
},
"delivery_constraint": "REACH_AND_FREQUENCY",
// Will automatically update to ACTIVE or FAILED
"reach_and_frequency_status": "PENDING",
"reach_and_frequency_rate_micro": 3652402
}
}
]
}

This endpoint will update a specified ad squad.

Attributes that must be updated

AttributeDescription
reach_and_frequency_statusMust be set back to PENDING
impression_goalMust be set to new value from new forecasting request
reach_goalMust be set to new value from new forecasting request
lifetime_budget_microMust be set to new value from new forecasting request

HTTP Request

PUT https://adsapi.snapchat.com/v1/campaigns/{campaign_id}/adsquads

Parameters

ParameterDefaultDescription
campaign_idCampaign ID

Create the Ad

R&F can be used with creatives of type Snap Ads or type Lens. Ads follow the type of creative as explained here

Cancelling R&F booking

There are four ways to cancel a booking. Please be aware that cancelling bookings frequently will lead to removal from the R&F program.

  1. Updating the AdSquad status to PAUSED
  2. Deleting the AdSquad
  3. Updating the Campaign status to PAUSED
  4. Deleting the Campaign
Was this page helpful?
Yes
No