---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://yandex.com/dev/direct/doc/en/best-practice/cpm-banner.md
  - https://yandex.com/dev/direct/doc/ru/best-practice/cpm-banner.md
  - href: en/best-practice/cpm-banner.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: en/dg/best-practice/cpm-banner.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/direct/doc/en/llms.txt

# How to work with display campaigns

Display campaigns are ad campaigns where you pay for Yandex Direct impressions rather than clicks. Ads are displayed in the Yandex Advertising Network on desktops and mobile devices, as well as on digital billboards.

A display campaign can include ad groups with different formats. The Yandex Direct API currently supports display banners and video display ads. For more information about these formats, see [Display banners](https://yandex.com/support/direct/en/products-cpm-campaign/about.html) and [Video advertising](https://yandex.com/support/direct/en/products-cpm-campaign-video/about.html) in Yandex Direct Help.

## Manage campaigns {#feed}

{% note alert %}

To design creatives in Ad Builder or upload creatives, you must use the web interface at this time.

{% endnote %}

1. Create a campaign with the `CPM_BANNER_CAMPAIGN` type: pass the [CpmBannerCampaign](https://yandex.com/dev/direct/doc/campaigns/add-cpm-banner-campaign.html) structure in the [Campaigns.add](https://yandex.com/dev/direct/doc/campaigns/add.html) method.

   For details about working with this type of campaign, see the section [Campaign type](https://yandex.com/dev/direct/doc/en/objects/campaign.md#type).

   For information about available display strategies, see the section [Display strategies](https://yandex.com/dev/direct/doc/en/objects/campaign-strategies.md).

   For information about other campaign parameters, see [Campaign parameters](https://yandex.com/dev/direct/doc/en/objects/campaign-params.md).

1. You can add groups of display banners and groups of video ads to a display campaign.

### Display banners {#feed}

1. Create an ad group.

   In a group of display banners, you can use either a user profile target or keywords. Depending on what impression criteria you plan to add, choose the group subtype:

   - To create a group with an audience target based on a user profile, use the [AdGroups.add](https://yandex.com/dev/direct/doc/adgroups/add.html) method to pass an empty `CpmBannerUserProfileAdGroup` structure.

   {% note info %}

   Negative keywords are not allowed in a group with an audience target based on a user profile.

   {% endnote %}

   - To create a group with keywords, use the [AdGroups.add](https://yandex.com/dev/direct/doc/adgroups/add.html) method to pass an empty `CpmBannerKeywordsAdGroup` structure.

   You cannot change the group subtype in the future.

1. Add impression criteria to the group.

   {% list tabs %}

   - User profile

      1. Get reference lists of Crypta segments based on demographic and behavioral characteristics, as well as lists of Crypta user interest segments: use the [Dictionaries.get](https://yandex.com/dev/direct/doc/dictionaries/get.html) method and specify `AudienceDemographicProfiles` and `AudienceInterests` in the request.

      1. Create a user profile: use the [RetargetingLists.add](https://yandex.com/dev/direct/doc/retargetinglists/add.html) method.

         The user profile is implemented as a retargeting list of the `AUDIENCE` type. For more information about the profile, see the section [Retargeting list (RetargetingList)](https://yandex.com/dev/direct/doc/en/objects/retargeting-list.md).

      1. Add a user profile to the ad group: the [AudienceTargets.add](https://yandex.com/dev/direct/doc/audiencetargets/add.html) method.

         If a manual display strategy is selected in the campaign, you can set a bid on the user profile immediately when adding the profile to an ad group or later using the [AudienceTargets.setBids](https://yandex.com/dev/direct/doc/audiencetargets/setBids.html) method.

   - Keywords

      Add keywords: use the [Keywords.add](https://yandex.com/dev/direct/doc/keywords/add.html) method.

      You can set bids and priorities immediately when creating keywords, or later using the [KeywordBids.set](https://yandex.com/dev/direct/doc/keywordbids/set.html) or [KeywordBids.setAuto](https://yandex.com/dev/direct/doc/keywordbids/setAuto.html) method.

      Aautotargeting can't be added to a group of display ads.

   {% endlist %}

1. Add ads to the group:

   1. Design creatives in Ad Builder or upload existing creatives in the Yandex Direct web interface. See [How to launch a display campaign](https://yandex.com/support/direct/en/products-cpm-campaign/create.html) in the Help for Yandex Direct.
   1. Get IDs of available creatives with the `HTML5_CREATIVE` and `IMAGE_CREATIVE` type: use the [Creatives.get](https://yandex.com/dev/direct/doc/creatives/get.html) method.
   1. Add one or more ads with the `CPM_BANNER_AD` type to the group by using the [Ads.add](https://yandex.com/dev/direct/doc/ads/add.html) method. Pass the ad parameters in the `CpmBannerAdBuilderAd` structure.

1. Submit ads for review: the [Ads.moderate](https://yandex.com/dev/direct/doc/ads/moderate.html) method.

### Video ad {#video-ads}

1. Create an ad group: use the [AdGroups.add](https://yandex.com/dev/direct/doc/adgroups/add.html) method to pass an empty `CpmVideoAdGroup` structure.

1. Add a user profile target to the group.

   1. Get reference lists of Crypta segments based on demographic and behavioral characteristics, as well as lists of Crypta user interest segments: use the [Dictionaries.get](https://yandex.com/dev/direct/doc/dictionaries/get.html) method and specify `AudienceDemographicProfiles` and `AudienceInterests` in the request.

   1. Create a user profile: use the [RetargetingLists.add](https://yandex.com/dev/direct/doc/retargetinglists/add.html) method.

   The user profile is implemented as a retargeting list of the `AUDIENCE` type. For more information about the profile, see the section [Retargeting list (RetargetingList)](https://yandex.com/dev/direct/doc/en/objects/retargeting-list.md).

   1. Add a user profile to the ad group: the [AudienceTargets.add](https://yandex.com/dev/direct/doc/audiencetargets/add.html) method.

   If a manual display strategy is selected in the campaign, you can set a bid on the user profile immediately when adding the profile to an ad group or later using the [AudienceTargets.setBids](https://yandex.com/dev/direct/doc/audiencetargets/setBids.html) method.

1. Add ads to the group:

   1. Design creatives in Ad Builder in the Yandex Direct web interface. See [Video advertising / How to launch](https://yandex.com/support/direct/en/products-cpm-campaign-video/create.html) in Yandex Direct Help.

   1. Get IDs of available creatives with the `CPM_VIDEO_CREATIVE` type: use the [Creatives.get](https://yandex.com/dev/direct/doc/creatives/get.html) method.

   1. Add one or more ads with the `CPM_VIDEO_AD` type: use the [Ads.add](https://yandex.com/dev/direct/doc/ads/add.html) method. Pass the ad parameters in the `CpmVideoAdBuilderAd` structure.

1. Submit ads for review: the [Ads.moderate](https://yandex.com/dev/direct/doc/ads/moderate.html) method.

## Getting statistics {#stat}

To get statistics for display campaigns, use [Reports](https://yandex.com/dev/direct/doc/reports.html). The report can provide the average CPM, the average frequency of impressions per user, and the number of unique users who were shown a banner.

In the report request, specify:

- In the `Type` parameter — the REACH_AND_FREQUENCY_PERFORMANCE_REPORT report type.
- In the `Filter` structure — one or multiple IDs of display campaigns. A filter by campaign is required for this type of report.
- In the `FieldNames` array, add the `CampaignId`, `AvgCpm`, `AvgImpressionFrequency`, and `ImpressionReach` values.

## Request example

```javascript translate=no
curl \
  -H 'Authorization: Bearer 0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f' \
  -H 'Accept-Language: en' \
  -H 'Client-Login: agrom' \
  -H 'returnMoneyInMicros: false' \
  -d '{
    "params": {
      "SelectionCriteria": {
        "Filter": [{
          "Field": "CampaignId",
          "Operator": "IN",
          "Values": [ "10012", "10017" ]
        }]
      },
      "FieldNames": [ "CampaignId", "Impressions", "Clicks", "Cost", "AvgCpm", "AvgImpressionFrequency", "ImpressionReach" ],
      "OrderBy": [{
        "Field": "CampaignId"
      }],
      "ReportName": "Display campaigns",
      "ReportType": "REACH_AND_FREQUENCY_PERFORMANCE_REPORT",
      "DateRangeType": "LAST_WEEK",
      "Format": "TSV",
      "IncludeVAT": "YES",
      "IncludeDiscount": "YES"
    }
  }' \
  https://api.direct.yandex.com/json/v501/reports
```
