Campaigns

Abstract

The CampaignService provides methods for creating, updating, deleting and retrieving campaigns. You can also create an app install campaign if your goal is to generate app downloads.

Overview

A campaign organizes one or more ad groups together and has its own budget and targeting settings. Campaigns allow you to manage your ads based on your advertising goals and business strategy. A campaign can include ads that run both in mobile search as well as in native positions within content streams across the Yahoo Ad Tech network. You can control where your ads will run by configuring the channel attribute.

Note

Once a campaign is created and ready to serve, it takes 15-30 minutes to be served. If you un-pause an object, it typically takes 15-30 minutes to serve. Any change you make takes 15-30 minutes to be reflected in a campaign and served.

Fields

The Campaign object contains the following fields:

Name

Description

Type

Add

Update

advertiserId

The ID of the advertiser to retrieve.

long

Required

Optional (Read-Only)

budget

The budget for your campaign in the currency provided in your billing settings. Using the budgetType attribute, you can either set a daily spend cap or provide a budget for the entire duration of the campaign. Note that budget should be set so that it is at least 50 times your desired bid for Native campaigns and 1 times your desired bid for Search campaigns.

BigDecimal

Required

Optional

budgetType

Type of budget. Value can be:

  • LIFETIME - the budget is for the entire duration of the campaign.

  • DAILY - the budget is the daily spend amount. Daily spend will be capped at the budget value.

  • MONTHLY - the budget is the monthly spend amount. Monthly spend will be capped at the budget value.

enum

Required

Optional

campaignName

The name of the campaign. Maximum limit is 255 characters.

string

Required

Optional

channel

The supply channel on which the campaign will run. The available options are:

  • NATIVE - will run in native positions on Yahoo! content streams

  • SEARCH - will run on mobile search supply

  • SEARCH_AND_NATIVE - will run on both mobile search and content streams supply

If channel is not set, default value will be SEARCH_AND_NATIVE. Please also note that for your ads to actually serve on the channels you have set, you will also need to set a bid for this channel.

enum

Optional

Optional

subChannel

The supply channel on which the campaign will run. The sub channel is only applicable when the channel is SEARCH. The available options are:

  • SRN_AND_SEARCH

  • SRN_ONLY

  • DEFAULT - to remove

enum

Optional

Optional

subChannelModifier

Bid modifiers allow you to increase or decrease your campaign bids. Allowed value: 0.1 to 2.

double

Required if subChannel is set. Default 0.3

Optional

id

The ID of the campaign.

long

N/A

Required

language

The language of the targeted audience. By default, this is set to en (for english). This can be set at the time of campaign creation and cannot be modified. For the list of supported languages, refer to the data dictionary section.

string

Optional

Read-only

objective

The objective of the campaign. Objective can only be set at the time of campaign creation and cannot be modified. Values can be:

  • VISIT_WEB - This is the default value and it should be used if your goal is to generate traffic to your webpages. This objective supports CPC pricing type for both mobile SEARCH and NATIVE ad campaigns.

  • VISIT_OFFER - Use this objective for dynamic product ads campaigns. Note that the objective supports the CPC pricing type and NATIVE campaigns only.

  • PROMOTE_BRAND - Use this objective if your goal is to increase brand awareness. This objective supports CPM or CPV pricing type and NATIVE campaigns only.

  • INSTALL_APP - Use this objective if your goal is to generate app downloads. This objective supports the CPC pricing type and NATIVE campaigns only. For more details, see the create an app install campaign section.

  • MAIL_SPONSORED - Use this objective if your goal is to generate email ad opens. This objective supports the CPC or CPV pricing type and NATIVE campaigns only.

  • REENGAGE_APP - Use this objective if your goal is to generate app re-engagements. This objective supports the CPC pricing type and NATIVE campaigns only. For more details, see the create a re-engage app campaign section.

enum

Required. Default to VISIT_WEB

Read-only

status

The status of the campaign. Valid values are:

  • ACTIVE

  • PAUSED

  • DELETED

Campaigns can be created in an ACTIVE state. If a campaign is in a PAUSED state, specify valid start and end dates at the ad group level in order to activate it.

enum

Required

Optional

isPartnerNetwork

Applies only to SEARCH campaigns. Determines whether your campaign will run on the Yahoo partner network. This field accepts TRUE or FALSE and defaults to TRUE. For NATIVE campaigns this field must be set to TRUE.

enum

Optional

Optional

defaultLandingUrl

This field is required only for INSTALL_APP and REENGAGE_APP campaigns. It should be used to pass the App Store or Google Play Store app url, and cannot be updated once set. Note that for INSTALL_APP, tracking parameters and redirects should not be part of the defaultLandingUrl. These should be provided at the ad level through the ad landingUrl.

string

Optional

Read-only

trackingPartner

This field is required only for INSTALL_APP campaigns. Use this field to specify the vendor you are using in order to track app install conversions. For a list of approved third-party tracking partners, refer to the data dictionary.

enum

Required (only for INSTALL_APP campaigns)

Read-only

appLocale

This is an optional field for INSTALL_APP and REENGAGE_APP campaigns. It can be used to specify the desired locale of the app store, and will default to “en-us” if not specified. For a list of available locales, refer to the data dictionary.

enum

Optional

Read-only

advancedGeoPos

Applies only to SEARCH campaigns. For the locations you target, the recommended and default value is DEFAULT, which means you will reach people either physically in your targeted locations or who have expressed interest in these locations. LOCATION_OF_PRESENCE means reaching only people physically in the targeted location, and LOCATION_OF_INTEREST means targeting only people who have expressed interest in the location.

enum

Optional

Optional

advancedGeoNeg

Applies only to SEARCH campaigns. Similar to advancedGeoPos but applies only to locations you exclude. Valid values are DEFAULT (the default) and LOCATION_OF_PRESENCE.

enum

Optional

Optional

effectiveStatus

The read-only effective status of the campaign based on the direct campaign status, accounts funds, campaign budget, and summarized ad group flight dates. Valid values are:

  • ACTIVE

  • PAUSED

  • DELETED

  • ENDED

  • LIFETIME_BUDGET_SPENT

  • AWAITING_FUNDS

  • AWAITING_START_DATE

string

N/A Read-only

N/A Read-only

conversionRuleIds

The conversion rule IDs to associate to this campaign. Must be valid IDs of conversion rules created in an account. To remove IDs, simply pass an empty array.

Array of longs

Optional

Optional

conversionRuleConfig

The campaign conversion configuration. Details are provided below.

json object

Optional

Optional

biddingStrategy

Available values are:

  • OPT_ENHANCED_CPC - For VisitWeb, MailSponsored, Shopping, and SponsoredProduct campaigns. The ECPA Goal on ad group is required. Setting this on campaign will override any bidding strategy set on the ad group level.

When applied to a SEARCH campaign, this means that Native & Search will dynamically modify your bid in order to optimize for eCPC conversions. An ad group bid is still required and will define the initial bid that Native & Search will gradually optimize. You also need to have at least one conversion rule set up in order to leverage this strategy.

When applied to a NATIVE campaign, this allows you to meet a CPC goal on average while getting more conversions by allowing your bids to be adjusted for individual impressions based on the likelihood of conversion. Note that there is no longer 30% guard-rail on ECPC. You can bid up to the extent that it feels necessary to win that auction.

  • OPT_POST_INSTALL - For InstallApp or ReengageApp NATIVE campaigns only. ECPA Goal on ad group is required. Setting this on campaign will override any bidding strategy set on the ad group level.

This means that Native & Search will dynamically modify your bid in order to optimize for the install and specific in-app event conversion rule. You also need to have at least one conversion rule set up in order to leverage this strategy, and it must be also included in the corresponding campaign’s Conversion Rule IDs.

  • OPT_CONVERSION - For VisitWeb, MailSponsored, InstallApp, or ReengageApp NATIVE campaigns only. ECPA Goal on ad group is required. Setting this on campaign will override any bidding strategy set on the ad group level.

This means that Native & Search will dynamically modify your bid in order to optimize for conversions. An ad group bid is still required and will define the initial bid that Native & Search will gradually optimize. You also need to have at least one conversion rule set up in order to leverage this strategy, and it must be also included in the corresponding campaign’s Conversion Rule IDs.

  • OPT_CLICK - For VisitWeb, MailSponsored, InstallApp, or ReengageApp NATIVE campaigns only. Setting this on campaign will override any bidding strategy set on the ad group level.

This means Native & Search will optimize per your selected price type (that is, deliver clicks for CPC ads or impressions for CPM ads).

  • MAX_OPT_CONVERSION - For VisitWeb and MailSponsored NATIVE campaigns only. Setting this on campaign will override any bidding strategy set on the ad group level.

This means Native & Search bids in a way that tried to balance spending the entire campaign budget with achieving the lowest CPA possible (that is, maximizing the number of conversions driven by the budget). Best for advertisers who are CPA-sensitive and also want to hit spend goals.

  • DEFAULT. This default means there is no bidding strategy set on the campaign level. It means that the ad group bidding strategy set will take place.

enum

optional

optional

optimizationRuleIds

Valid only for InstallApp campaigns. Values entered here should be a subset of the conversionRuleIds this campaign is associated with. Note that this is only available in the v3 Native & Search API.

Array of longs

Optional

Optional

isDeepLink

This field allows you to deep link into your mobile app, targeting your product or users who have already installed your app. Available for VISIT_WEB, REENGAGE_APP, and VISIT_OFFER campaigns, and only for Native channels. (Note that you can’t set the value for REENGAGE_APP. Defaults to TRUE.)

enum

Optional

Optional


Campaign conversion configuration contains the following fields:

Name

Description

Type

Add

Update

timeWindow

The post-click conversion lookback window in minutes. Valid only for VisitedWeb and PromoteBrand campaigns. Must be between 1 and 43200 (1 Minute and 30 Days). Default is 43200 (30 Days).

int

Optional

Optional

postViewTimeWindow

The post-view conversion lookback window in minutes. Valid only for VisitedWeb and PromoteBrand campaigns. Must be between 1 and 43200 (1 Minute and 30 Days). Default is 2880 (2 Days). Note that this is only available in the v3 Native & Search API.

int

Optional

Optional

conversionCounting

The Conversion Counting setting for your campaign. Must be one of the following values:

  • ALL_PER_INTERACTION

  • ONE_PER_INTERACTION

Default is ALL_PER_INTERACTION.

enum

Optional

Optional

Endpoint

Resource URI

https://api.gemini.yahoo.com/v3/rest/campaign/

v3 Upgraded URL Attributes

Important

For the v3 Native Ad Platform API, Upgraded URL (UU) attributes are now supported for the Campaign object type.

The following table describes the supported UU attributes per the Ad object type in v3 Native Ad Platform API.

Object

Landing Url

Display Url

Final Url

Mobile Final Url

TrackingUrl

Custom Parameters

Display Url Path1

Display Url Path2

Ad

dp

dp

yes

yes

yes

yes

yes

yes

Note

dp stands for deprecated in the above table.

Note

The landing page url is deprecated only for search. The Final url will be eligible in a native context. Native-only ads are not required to use the final URL and may continue to use the landing page url.

For more information on Upgraded URLs in v3, refer to Upgraded URLs.

Example Representations

Campaign

{
  "id": 31364,
  "status": "PAUSED",
  "advertiserId": 87292,
  "campaignName": "SampleCampaign",
  "budget": 3000,
  "language": "en",
  "budgetType": "LIFETIME",
  "channel": "SEARCH_AND_NATIVE",
  "objective": "PROMOTE_BRAND",
  "isPartnerNetwork": "TRUE",
  "advancedGeoPos": "DEFAULT",
  "advancedGeoNeg": "DEFAULT"
}

Campaign Array

[
  {
      "id": 31336,
      "status": "ACTIVE",
      "advertiserId": 87292,
      "campaignName": "Campaign1",
      "budget": 1100,
      "language": "en",
      "budgetType": "LIFETIME",
      "channel": "SEARCH"
      "objective": "VISIT_WEB",
      "isPartnerNetwork": "TRUE",
      "advancedGeoPos": "DEFAULT",
      "advancedGeoNeg": "DEFAULT"
  },
  {
      "id": 31337,
      "status": "PAUSED",
      "advertiserId": 87292,
      "campaignName": "Campaign2",
      "budget": 2000,
      "language": "en",
      "budgetType": "LIFETIME",
      "channel": "NATIVE"
      "objective": "PROMOTE_BRAND",
      "isPartnerNetwork": "TRUE",
      "advancedGeoPos": "DEFAULT",
      "advancedGeoNeg": "DEFAULT"
  }
]

Campaign Response

{
  "errors": null,
  "response": {
      "id": 31364,
      "status": "PAUSED",
      "advertiserId": 87292,
      "campaignName": "SampleCampaign",
      "budget": 3000,
      "language": "en",
      "budgetType": "LIFETIME",
      "channel": "SEARCH_AND_NATIVE"
      "objective": "VISIT_WEB",
      "isPartnerNetwork": "TRUE",
      "advancedGeoPos": "DEFAULT",
      "advancedGeoNeg": "DEFAULT"
  }
}

Operations

Read specific campaign data

Method: To retrieve data for a specific campaign, make a GET call with the ID parameter.

Example: GET call to retrieve a campaign:

https://api.gemini.yahoo.com/v3/rest/campaign/31336

The response will be the campaign associated with the given ID:

{
  "errors": null,
  "response": {
      "id": 31336,
      "status": "PAUSED",
      "advertiserId": 87292,
      "campaignName": "SampleCampaign",
      "budget": 100,
      "language": "en",
      "budgetType": "LIFETIME",
      "channel": "SEARCH_AND_NATIVE",
      "objective": "VISIT_WEB",
      "isPartnerNetwork": "TRUE",
      "advancedGeoPos": "DEFAULT",
      "advancedGeoNeg": "DEFAULT"
  }
}

Response: The campaign associated with the given ID.

Example: GET call with multiple IDs. Note that when you pass multiple IDs all other filters besides ID will be ignored:

https://api.gemini.yahoo.com/v3/rest/campaign/?id=30429&id=30430

Response: The campaigns associated with the given IDs:

{
  "errors": null,
  "response": [
      {
          "id": 30429,
          "status": "PAUSED",
          "advertiserId": 19426,
          "campaignName": "Campaign1",
          "budget": 100,
          "language": "en",
          "budgetType": "DAILY",
          "channel": "SEARCH",
          "objective": "VISIT_WEB",
          "isPartnerNetwork": "TRUE",
          "advancedGeoPos": "DEFAULT",
          "advancedGeoNeg": "DEFAULT"
      },
      {
          "id": 30430,
          "status": "PAUSED",
          "advertiserId": 19426,
          "campaignName": "Campaign2",
          "budget": 500,
          "language": "en",
          "budgetType": "DAILY",
          "channel": "SEARCH",
          "objective": "VISIT_WEB",
          "isPartnerNetwork": "TRUE",
                  "advancedGeoPos": "DEFAULT",
                  "advancedGeoNeg": "DEFAULT"
      }
  ]
}

Read data for filtered list of campaigns

Method: To retrieve data for a filtered list of campaigns, make a GET call using the following parameters:

Name

Description

Type

advertiserId

The ID of the advertiser to filter campaigns by.

long

mr

The maximum number of rows to retrieve.

int

si

The start index or the first element to retrieve.

int

status

The status of the campaign to filter by.

enum


Important

advertiserId parameter is a required query parameter for all filtered list GET calls.

Note

You can either: 1) pass filters (status=…. advertiserId=…. si=… mr=….) and get a paginated list of campaigns back or 2) pass specific campaign ids and get the specified entities with matching ids. If you pass specific campaign ids, they will trump and all filters will be ignored.

Example: GET call for a filtered list of campaigns:

https://api.gemini.yahoo.com/v3/rest/campaign/?advertiserId=87292&mr=2

{
  "errors": null,
  "response": [
      {
          "id": 31336,
          "status": "PAUSED",
          "advertiserId": 87292,
          "campaignName": "MobileSearch",
          "budget": 100,
          "language": "en",
          "budgetType": "LIFETIME",
          "channel": "SEARCH",
          "objective": "VISIT_WEB",
          "isPartnerNetwork": "TRUE",
                  "advancedGeoPos": "DEFAULT",
                  "advancedGeoNeg": "DEFAULT"
      },
      {
          "id": 31337,
          "status": "ACTIVE",
          "advertiserId": 87292,
          "campaignName": "NativeAds",
          "budget": 100,
          "language": "en",
          "budgetType": "LIFETIME",
          "channel": "NATIVE",
          "objective": "PROMOTE_BRAND",
          "isPartnerNetwork": "TRUE",
                  "advancedGeoPos": "DEFAULT",
                  "advancedGeoNeg": "DEFAULT"
      }
  ]
}

Response: The list of campaigns matching the given filter.

Update existing campaigns

Method: To update one or more existing campaigns, make a PUT call to the Campaign endpoint with one or more campaign objects. Specify the fields to update; note that id is the only required parameter, all other fields are optional. The result will be the list of updated campaigns. Partial update is supported; fields that are either not passed or passed as null will be ignored for the update. For example, in order to update the budget for a campaign:

PUT https://api.gemini.yahoo.com/v3/rest/campaign

Data passed
{
   "id": 31336,
   "budget":500
}

Example response
{
  "errors": null,
  "response": {
      "id": 31336,
      "status": "PAUSED",
      "campaignName": "NativeAds",
      "advertiserId": 87292,
      "budget": 500,
      "language": "en",
      "budgetType": "LIFETIME",
      "channel": "NATIVE",
      "objective": "PROMOTE_BRAND",
      "isPartnerNetwork": "TRUE",
          "advancedGeoPos": "DEFAULT",
          "advancedGeoNeg": "DEFAULT"
  }
}

Create a new campaign

Method: To create a new campaign, make a POST call to the Campaign endpoint with the required fields. Batch create is supported; either a campaign or a campaign array can be passed. The response will be the newly created campaign, or a list of multiple new campaigns if an array is passed.

Example 1: Create a campaign that will run only on native content streams:

POST https://api.gemini.yahoo.com/v3/rest/campaign

Data passed
  {
    "status":"PAUSED",
    "campaignName":"NativeAdsCampaign",
    "budget": 3000,
    "language": "en",
    "budgetType": "LIFETIME",
    "advertiserId": 87292,
    "channel":"NATIVE",
    "objective": "PROMOTE_BRAND",
    "isPartnerNetwork": "TRUE",
    "advancedGeoPos": "DEFAULT",
    "advancedGeoNeg": "DEFAULT"
  }

Example response
  {
    "errors": null,
    "response": {
        "id": 31466,
        "status": "PAUSED",
        "advertiserId": 87292,
        "campaignName": "NativeAdsCampaign",
        "budget": 3000,
        "language": "en",
        "budgetType": "LIFETIME",
        "channel": "NATIVE",
        "objective": "PROMOTE_BRAND",
        "isPartnerNetwork": "TRUE,
            "advancedGeoPos": "DEFAULT",
            "advancedGeoNeg": "DEFAULT"
    }
  }

Example 2: Create multiple campaigns by passing in an array of campaigns:

POST https://api.gemini.yahoo.com/v3/rest/campaign

Data passed
[
  {
      "status": "PAUSED",
      "campaignName": "MobileSearch1",
      "budget": 100,
      "language": "en",
      "budgetType": "DAILY",
      "advertiserId": 87292,
      "channel": "SEARCH",
      "objective": "VISIT_WEB",
      "isPartnerNetwork": "TRUE",
          "advancedGeoPos": "DEFAULT",
          "advancedGeoNeg": "DEFAULT"
  },
  {
      "status": "PAUSED",
      "campaignName": "MobileSearch2",
      "budget": 200,
      "language": "en",
      "budgetType": "LIFETIME",
      "advertiserId": 87292,
      "channel": "SEARCH",
      "objective": "VISIT_WEB",
      "isPartnerNetwork": "TRUE",
          "advancedGeoPos": "DEFAULT",
          "advancedGeoNeg": "DEFAULT"
  }
]

Example response
{
  "errors": null,
  "response": [
      {
          "id": 31467,
          "status": "PAUSED",
          "advertiserId": 87292,
          "campaignName": "MobileSearch1",
          "budget": 100,
          "language": "en",
          "budgetType": "DAILY",
          "channel": "SEARCH",
          "objective": "VISIT_WEB",
              "isPartnerNetwork": "TRUE",
                  "advancedGeoPos": "DEFAULT",
                  "advancedGeoNeg": "DEFAULT"
      },
      {
          "id": 31468,
          "status": "PAUSED",
          "advertiserId": 87292,
          "campaignName": "MobileSearch2",
          "budget": 200,
          "language": "en",
          "budgetType": "LIFETIME",
          "channel": "SEARCH",
          "objective": "VISIT_WEB",
              "isPartnerNetwork": "TRUE",
                  "advancedGeoPos": "DEFAULT",
                  "advancedGeoNeg": "DEFAULT"
      }
  ]
}

Create an app install campaign

Method: To create an app install campaign, you will need to set the objective to INSTALL_APP, and to provide a link to your app in the defaultLandingUrl field. Note that tracking parameters and redirects should not be part of the defaultLandingUrl. These should be provided at the ad level through the ad landingUrl. Also note that trackingPartner is required in the request, but will not be returned in the response. You can refer to the dictionary service for supported trackingPartner values.

POST https://api.gemini.yahoo.com/v3/rest/campaign

Data passed
  {
      "budgetType": "DAILY",
              "budget": 800,
              "status": "ACTIVE",
              "objective": "INSTALL_APP",
              "advertiserId": 11610,
              "campaignName": "Flickr Android app install campaign",
              "defaultLandingUrl": "https://play.google.com/store/apps/details?id=com.yahoo.mobile.client.android.flickr",
              "channel": "NATIVE",
              "trackingPartner": "appsflyer",
              "appLocale":"en-us"
  }

 Example response
 {
  "errors": null,
  "timestamp": "2015-02-05 6:10:46",
      "response": {
         "language": "en",
         "budget": 800,
         "budgetType": "DAILY",
         "id": 338558004,
         "status": "ACTIVE",
         "objective": "INSTALL_APP",
         "campaignName": "Flickr Android app install campaign",
         "advertiserId": 11610,
         "isPartnerNetwork": "TRUE",
         "defaultLandingUrl": "https://play.google.com/store/apps/details?id=com.yahoo.mobile.client.android.flickr",
         "channel": "NATIVE",
         "appLocale":"en-us"
       }
}

Create a search retargeting campaign

Method: To create a search retargeting campaign that will run only on native content streams, make a POST call to the Campaign endpoint with the required fields. Batch create is supported; either a campaign or a campaign array can be passed. The response will be the newly created campaign, or a list of multiple new campaigns if an array is passed.

POST https://api.gemini.yahoo.com/v3/rest/campaign

Data passed
  {
    "status":"PAUSED",
    "campaignName":"SearchRetargetingCampaign",
    "budget": 300,
    "language": "en",
    "budgetType": "LIFETIME",
    "advertiserId": 1530348,
    "channel":"NATIVE",
"subChannel":"SRN_ONLY",
    "objective": "VISIT_WEB"
  }

Example response
  {
    "errors": null,
    "response": {
        "id": 31466,
        "status": "PAUSED",
        "advertiserId": 1530348,
        "campaignName": "SearchRetargetingCampaign",
        "budget": 300,
        "language": "en",
        "budgetType": "LIFETIME",
        "channel": "NATIVE",
            "channel":"NATIVE",
        "subChannel":"SRN_ONLY",
            "objective": "VISIT_WEB"
    }
  }

Important

Once you create a search retargeting campaign, it cannot be changed to non-search retargeting. That said, you can change a native campaign to search retargeting. Clone will only clone the campaign with its existing data. So if the campaign is search retargeting, the cloned campaign will be search retargeting. You cannot change the subChannel in clone. So search retargeting campaigns cannot be created through clone. biddingStrategy will be defaulted to OPT_ENHANCED_CPC. Currently, only the VISIT_WEB campaign objective is supported.

Create a re-engage app campaign

Method: To create an app install campaign, you will need to set the objective to REENGAGE_APP, and to provide a link to your app in the defaultLandingUrl field. Note that tracking parameters and redirects should not be part of the defaultLandingUrl. These should be provided at the ad level through the ad landingUrl. The landingUrl is where you insert the deep link to take the user to the section of their app. Also note that trackingPartner is required in the request, but will not be returned in the response. You can refer to the dictionary service for supported trackingPartner values.

POST https://api.gemini.yahoo.com/v3/rest/campaign

Data passed
  {
      "budgetType": "DAILY",
              "budget": 800,
              "status": "ACTIVE",
              "objective": "REENGAGE_APP",
              "advertiserId": 11610,
              "campaignName": "Flickr Android app install campaign",
              "defaultLandingUrl": "https://play.google.com/store/apps/details?id=com.yahoo.mobile.client.android.flickr",
              "channel": "NATIVE",
              "trackingPartner": "appsflyer",
              "appLocale":"en-us"
  }

 Example response
 {
  "errors": null,
  "timestamp": "2015-02-05 6:10:46",
      "response": {
         "language": "en",
         "budget": 800,
         "budgetType": "DAILY",
         "id": 338558004,
         "status": "ACTIVE",
         "objective": "REENGAGE_APP",
         "campaignName": "Flickr Android app install campaign",
         "advertiserId": 11610,
         "isPartnerNetwork": "TRUE",
         "defaultLandingUrl": "https://play.google.com/store/apps/details?id=com.yahoo.mobile.client.android.flickr",
         "channel": "NATIVE",
         "appLocale":"en-us"
       }
}

Delete a campaign

Method: To delete one or more campaigns, make a PUT call to the Campaign endpoint. The following parameters are required for the PUT call:

Field

Description

id

The ID of the campaign to delete.

status

The status of the campaign should be set to DELETED in order to delete the campaign.


Note

In v2, the DELETE operation is supported for both single and multiple ids.

Example:

PUT https://api.gemini.yahoo.com/v3/rest/campaign
DELETE https://api.gemini.yahoo.com/v3/rest/campaign/{id}
DELETE https://api.gemini.yahoo.com/v3/rest/campaign?id=123&id=1234&...

Data passed
 {
  "id": 31336,
  "status": "DELETED"
 }

 Example response
 {
  "errors": null,
  "response": [
      {
          "id": 31336,
          "status": "DELETED",
          "advertiserId": 87292,
          "campaignName": "MobileSearch1",
          "budget": 100,
          "language": "en",
          "budgetType": "DAILY",
          "channel": "SEARCH",
          "objective": "VISIT_WEB",
              "isPartnerNetwork": "TRUE",
          "advancedGeoPos": "DEFAULT",
          "advancedGeoNeg": "DEFAULT"
      }
  ]
}

Create a mail-sponsored campaign

Method: To create a mail-sponsored campaign for a NATIVE channel, make a POST call to the Campaign endpoint with the required fields. Note that this only works with the MAIL_SPONSORED campaign objective.

POST https://api.gemini.yahoo.com/v3/rest/campaign
Example representation

{
     "errors": null,
       "response": {
           "id": 31364,
           "status": "ACTIVE",
           "advertiserId": 87292,
           "campaignName": "Sample Mail Sponsored Campaign",
           "budget": 3000,
           "language": "en",
           "budgetType": "LIFETIME",
           "channel": "NATIVE"
           "objective": "MAIL_SPONSORED",
           "isPartnerNetwork": "FALSE",
           "advancedGeoPos": "DEFAULT",
           "advancedGeoNeg": "DEFAULT"
       }
}

Create a campaign supporting deep links

Method: To create a campaign for a NATIVE channel that supports deep links, make a POST call to the Campaign endpoint with the required fields. Note that this only works with the VISIT_WEB, REENGAGE_APP, VISIT_OFFER campaign objectives.

POST https://api.gemini.yahoo.com/v3/rest/campaign
Example representation

{
     "id": 31364,
       "status": "PAUSED",
       "advertiserId": 87292,
       "campaignName": "Sample Tumblr Campaign",
       "budget": 3000,
       "language": "en",
       "budgetType": "LIFETIME",
       "channel": "NATIVE",
       "objective": "VISIT_WEB",
   "isDeepLink": "TRUE",
       "isPartnerNetwork": "TRUE"
}

Important

All the ads under this campaign deep link into your mobile app, targeting your product or users who have already installed your app.

Frequency Cap

You can define the number of times users can be exposed to your campaign in a given time period. Note that this only applies to PROMOTE_BRAND campaigns. For other campaign types, the frequency is managed and optimized by Native & Search.

Endpoint

Resource URI

https://api.gemini.yahoo.com/v3/rest/frequency

You can set frequency capping by making a POST call passing in the following fields:

Name

Description

Type

Add

Update

id

The unique identifier

long

NA

Required

value

The number of times a given user will be exposed to your campaign.

int

Required

Optional

type

The time interval for which the frequency cap is set. Currently this must be set to DAILY or WEEKLY.

enum

Required

Optional (Read-Only)

advertiserId

The advertiser id.

long

Required

Optional (Read-Only)

parentType

Must be set to CAMPAIGN.

enum

Required

Optional (Read-Only)

parentId

The ID of the parent campaign.

long

Required

Optional (Read-Only)

status

Valid values are ACTIVE, PAUSED and DELETED. Will default to ACTIVE if not provided.

enum

Optional

Optional


For example, to set frequency capping for a campaign:

PUT https://api.gemini.yahoo.com/v3/rest/frequency

Data passed
{
 "value": 10,
 "type": "DAILY",
 "advertiserId": 11610,
 "parentType": "CAMPAIGN",
 "parentId": 332817035,
 "id": 299239189394
}

Example response
{
 "errors": null,
 "timestamp": "2015-08-22 1:58:45",
 "response": {
     "type": "DAILY",
     "id": 295617989759,
     "status": "ACTIVE",
     "parentId": 332817035,
     "parentType": "CAMPAIGN",
     "advertiserId": 11610,
     "value": "10"
  }
}

To delete frequency capping for a campaign:

PUT https://api.gemini.yahoo.com/v3/rest/frequency

Data passed
{
 "id": 295617989759,
 "status": "DELETED"
}

Example response
{
 "errors": null,
 "timestamp": "2015-08-22 2:08:50",
 "response": {
     "type": "DAILY",
     "status": "DELETED",
     "id": 295617989759,
     "parentId": 332817035,
     "parentType": "CAMPAIGN",
     "advertiserId": 11610,
     "value": "10"
  }
}

Shared Structured Snippet

You can use the Shared Structured Snippet service for creating, updating, and retrieving shared structured snippets at the advertiser account level.

Shared Structured Snippet is a new ad extension type that leverages a shared object model similar to shared sitelinks. You can associate this type with campaigns and ad groups.

Endpoint

Resource URI

https://api.gemini.yahoo.com/v3/rest/sharedstructuredsnippet

Name

Description

Type

Required

Mutable

Max length

System managed

id

The id of the StructuredSnippet.

long

Yes

No

Yes

parentType

The entity level (NULL in shared model).

enum

Yes

No

Yes

parentId

The entity id (NULL in shared model).

long

Yes

No

Yes

status

The Status of the StructuredSnippet. Supported values:

  • ON

  • OFF

  • DELETED

enum

Yes

Yes

No

type

The type of the ad extension: STRUCTURED_SNIPPET

enum

Yes

No

header

The enum value which holds one of the values from the predefined Structured Snippet header list

enum

Yes

Yes

25

values

An array of individual values associated with the StructuredSnippet. Can hold up to free 10 free text values, each of 25 characters in length. This attribute maps to a single db field VARCHAR2(3000)

List<String>

Yes

Yes

advertiserId

The Advertiser Id.

long

Yes

No

Example Representations

Structured Snippet Extension

{
   "type":"STRUCTURED_SNIPPET",
   "header":"AMENITIES",
   "values":["Free wi-fi", "Heated pool", "Rooftop bar"]
   "advertiserId":1904022,
   "createdDate":1480439284572,
   "lastUpdateDate":1480439284600,
   "status":"ON",
   "parentSourceID":null,
   "unsupportedFeatures":null,
   "memberCount":1,
   "referenceAdGroupCount":null,
   "referenceCampaignCount":null,
   "referenceCount":null,
   "sourceID":null,
   "sourceType":null,
   "parentId":null,
   "createdByUser":"srichara|1470432223",
   "lastUpdatedByUser":"srichara|1470432223",
   "parentType":null,
   "id":10164000
}

Shared Relationship for Structured Snippet(shared at adGroup level)

{
   "object":{
      "header":"AMENITIES",
      "values":["Free wi-fi", "Heated pool", "Rooftop bar"]
      "advertiserId":1904022,
      "createdDate":1480439284572,
      "lastUpdateDate":1480439284600,
      "status":"ON",
      "parentSourceID":null,
      "unsupportedFeatures":null,
      "memberCount":1,
      "referenceAdGroupCount":null,
      "referenceCampaignCount":null,
      "referenceCount":null,
      "sourceID":null,
      "sourceType":null,
      "parentId":null,
      "createdByUser":"srichara|1470432223",
      "lastUpdatedByUser":"srichara|1470432223",
      "parentType":null,
      "id":10164000,
      "type":"STRUCTURED_SNIPPET",
   },
   "advertiserId":1904022,
   "status":"ON",
   "deletedDate":null,
   "adGroupId":343827178,
   "sourceID":null,
   "sourceType":null,
   "campaignId":null,
   "parentId":343827125,
   "sharedObjectId":10164000,
   "parentType":"ADGROUP",
   "sharedObjectType":" STRUCTURED_SNIPPET",
   "id":953002,
   "priority":null
}