> ## Documentation Index
> Fetch the complete documentation index at: https://developers.criteo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# /preview/marketing-solutions/ad-sets

> Create an ad set with the provided parameters



## OpenAPI

````yaml https://api.criteo.com/preview/marketingsolutions/open-api-specifications.json post /preview/marketing-solutions/ad-sets
openapi: 3.0.1
info:
  title: Criteo API
  description: Criteo API - MarketingSolutions
  version: Preview
servers:
  - url: https://api.criteo.com
security:
  - oauth: []
tags:
  - name: Advertiser
  - name: Analytics
  - name: Audience
  - name: Campaign
  - name: Catalog
  - name: Creative
  - name: Gateway
  - name: OnSiteRecommendation
  - name: Reco
paths:
  /preview/marketing-solutions/ad-sets:
    post:
      tags:
        - Campaign
      summary: /preview/marketing-solutions/ad-sets
      description: Create an ad set with the provided parameters
      operationId: CreateAdSet
      requestBody:
        description: the ad sets to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAdSetV26Q1Request'
        required: true
        x-bodyName: adSet
      responses:
        '201':
          description: The ad set that has been created and errors / warnings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseReadAdSetV26Q1'
      security:
        - oauth:
            - MarketingSolutions_Campaign_Manage
components:
  schemas:
    CreateAdSetV26Q1Request:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CreateAdSetV26Q1Resource'
      description: Data model for an input resources
    ResponseReadAdSetV26Q1:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ReadModelReadAdSetV26Q1'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/CommonProblem'
          nullable: true
          readOnly: true
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/CommonProblem'
          nullable: true
          readOnly: true
      description: output resource
    CreateAdSetV26Q1Resource:
      type: object
      properties:
        attributes:
          $ref: '#/components/schemas/CreateAdSetV26Q1'
        type:
          type: string
          description: Canonical type name of the entity
          example: AdSet
      description: Data model for a Resource
    ReadModelReadAdSetV26Q1:
      type: object
      properties:
        attributes:
          $ref: '#/components/schemas/ReadAdSetV26Q1'
        id:
          type: string
          description: Id of the entity
          nullable: true
          readOnly: true
        type:
          type: string
          nullable: true
          readOnly: true
          example: ReadAdSetV26Q1
      description: read model data for resources
      nullable: true
    CommonProblem:
      type: object
      properties:
        code:
          type: string
          description: A machine-readable error code, expressed as a string value.
          nullable: true
        detail:
          type: string
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem
          nullable: true
        instance:
          type: string
          description: A URI that identifies the specific occurrence of the problem.
          nullable: true
        source:
          type: object
          additionalProperties:
            type: string
          description: >-
            A machine-readable structure to reference to the exact location(s)
            causing the error(s)
          nullable: true
        stackTrace:
          type: string
          nullable: true
        title:
          type: string
          description: A short human-readable description of the problem type
          nullable: true
        traceId:
          type: string
          description: The request correlation ID this problem comes from.
          nullable: true
        traceIdentifier:
          type: string
          description: >-
            The request correlation ID this problem comes from. (deprecated, use
            traceId instead)
          nullable: true
        type:
          enum:
            - unknown
            - access-control
            - authentication
            - authorization
            - availability
            - deprecation
            - quota
            - validation
          type: string
          description: The problem's category.
          nullable: true
      description: Common problem object.
    CreateAdSetV26Q1:
      required:
        - bidding
        - campaignId
        - datasetId
        - mediaType
        - name
        - objective
        - schedule
        - targeting
        - trackingCode
      type: object
      properties:
        attributionConfiguration:
          $ref: '#/components/schemas/CreateAdSetAttributionConfigurationV26Q1'
        bidding:
          $ref: '#/components/schemas/CreateAdSetBiddingV26Q1'
        budget:
          $ref: '#/components/schemas/CreateAdSetBudgetV26Q1'
        campaignId:
          type: string
          description: Campaign id this ad set belongs to
          nullable: true
        datasetId:
          type: string
          description: Dataset id of this ad set
        mediaType:
          enum:
            - display
            - video
          type: string
          description: Media type for the ad set
        name:
          type: string
          description: Name of the ad set
          nullable: true
        objective:
          enum:
            - customAction
            - clicks
            - conversions
            - displays
            - appPromotion
            - revenue
            - storeConversions
            - value
            - reach
            - visits
            - videoViews
          type: string
          description: Objective of the ad set
        schedule:
          $ref: '#/components/schemas/CreateAdSetScheduleV26Q1'
        targeting:
          $ref: '#/components/schemas/CreateAdSetTargetingV26Q1'
        trackingCode:
          type: string
          description: The click tracking code associated to this Ad Set.
          nullable: true
      description: ad set create model
      example:
        name: test adset
        datasetId: '108002'
        campaignId: '358313'
        objective: conversions
        schedule:
          startDate: '2026-04-04T16:21:06.3537890+02:00'
          endDate: '2026-04-13T16:21:06.3537917+02:00'
        bidding:
          costController: dailyBudget
        targeting:
          deliveryLimitations:
            environments:
              - web
            devices:
              - desktop
            operatingSystems:
              - android
          geoLocation:
            countries:
              operand: in
              values:
                - FR
                - IT
          frequencyCapping:
            frequency: daily
            maximumImpressions: 1000
        budget:
          budgetStrategy: capped
          budgetRenewal: weekly
          budgetDeliverySmoothing: standard
          budgetDeliveryWeek: mondayToSunday
          pacingBehavior: targetFullBudget
          budgetAmount: 1000
        trackingCode: Test123
        mediaType: display
        attributionConfiguration:
          attributionMethod: criteoAttribution
    ReadAdSetV26Q1:
      type: object
      properties:
        advertiserId:
          type: string
          description: "Advertiser id of the campaign this ad set belongs to\r\nThis value is a string-encoded integer."
          nullable: true
        attributionConfiguration:
          $ref: '#/components/schemas/ReadAdSetAttributionConfigurationV26Q1'
        bidding:
          $ref: '#/components/schemas/ReadAdSetBiddingV26Q1'
        budget:
          $ref: '#/components/schemas/ReadAdSetBudgetV26Q1'
        campaignId:
          type: string
          description: "Campaign id this ad set belongs to.\r\n            \r\nThis is a key to a MarketingCampaign entity, which can be retrieved using the MarketingCampaigns endpoints.\r\nThis value is a string-encoded integer."
          nullable: true
        datasetId:
          type: string
          description: "Dataset id of this ad set\r\nThis value is a string-encoded integer."
          nullable: true
        destinationEnvironment:
          enum:
            - undefined
            - web
            - app
          type: string
          description: "The environment that an ad click will lead a user to.\r\n            \r\nPossible values:\r\n- undefined: the ad set does not specify its destination environment\r\n- web: the ad set lead users to a web page\r\n- app: the ad set lead users to an app"
          nullable: true
        mediaType:
          enum:
            - display
            - video
          type: string
          nullable: true
        name:
          type: string
          description: Name of the ad set
          nullable: true
        objective:
          enum:
            - customAction
            - clicks
            - conversions
            - displays
            - appPromotion
            - revenue
            - storeConversions
            - value
            - reach
            - visits
            - videoViews
          type: string
          description: "Ad set objective.\r\n            \r\nPossible values:\r\n- customAction (previously \"Actions\")\r\n- clicks\r\n- conversions\r\n- displays\r\n- appPromotion (previously \"Installs\")\r\n- revenue\r\n- storeConversions\r\n- value\r\n- reach (previously \"ViewedImpressions\")\r\n- visits\r\n- videoViews (previously \"CompletedVideoViews\")"
          nullable: true
        schedule:
          $ref: '#/components/schemas/ReadAdSetScheduleV26Q1'
        targeting:
          $ref: '#/components/schemas/AdSetTargetingV26Q1'
        videoChannel:
          enum:
            - olv
            - ctv
          type: string
          nullable: true
      description: "Ad set read model.\r\n            \r\nThe ad set is the configuration unit that defines ads delivery. Its binds together the objective, budget,\r\nscheduling, targeting options and ads."
      nullable: true
    CreateAdSetAttributionConfigurationV26Q1:
      type: object
      properties:
        attributionMethod:
          enum:
            - unknown
            - criteoAttribution
            - googleAnalyticsLastClick
            - googleAnalyticsDataDriven
            - lastClick
            - postClick
            - sftp
            - googleAnalytics
          type: string
          description: The attribution method.
        lookbackWindow:
          enum:
            - unknown
            - 30M
            - 24H
            - 7D
            - 30D
          type: string
          description: >-
            The lookback window. Optional, should be specified only for
            attribution methods PostClick and LastClick.
          nullable: true
      description: Create model for an ad set's attribution configuration.
    CreateAdSetBiddingV26Q1:
      required:
        - costController
      type: object
      properties:
        bidAmount:
          type: number
          description: >-
            Decimal value target relating to the `bidStrategy` specified. May be
            `null` for strategies that do not require a target value. At most 4
            decimals are supported. Additional decimals are rounded.
          format: double
          nullable: true
        costController:
          enum:
            - COS
            - maxCPC
            - CPI
            - CPM
            - CPO
            - CPSV
            - CPV
            - dailyBudget
            - targetCPM
          type: string
          description: How spend is controlled
      description: ad set bidding create model
    CreateAdSetBudgetV26Q1:
      required:
        - budgetStrategy
      type: object
      properties:
        budgetAmount:
          type: number
          description: >-
            Maximum budget amount in the advertiser's currency per renewal
            period. Required non-null when capped. Must be null when uncapped.
          format: double
          nullable: true
        budgetDeliverySmoothing:
          enum:
            - accelerated
            - standard
          type: string
          description: "Pacing strategy for spending the budget within a renewal period. Only applicable when budgetStrategy is \"capped\".\r\n- \"accelerated\": spend pacing is based on delivery efficiency rather than the full budget period.\r\n- \"standard\": spread spending evenly over the renewal period.\r\nWhen budgetStrategy is \"uncapped\", this field is not set (null in read responses, omit in create/patch requests)."
        budgetDeliveryWeek:
          enum:
            - undefined
            - mondayToSunday
            - tuesdayToMonday
            - wednesdayToTuesday
            - thursdayToWednesday
            - fridayToThursday
            - saturdayToFriday
            - sundayToSaturday
          type: string
          description: "Defines which day-of-week boundaries are used for weekly budget renewal. Only applicable when budgetStrategy is \"capped\", budgetRenewal is \"weekly\", and budgetDeliverySmoothing is \"standard\".\r\n- \"mondayToSunday\", \"tuesdayToMonday\", etc.: the day range over which the weekly budget is paced. Changing this value on the active budget also propagates to all scheduled budgets of the same ad set.\r\n- \"undefined\": used when budgetStrategy is \"uncapped\", when budgetRenewal is not \"weekly\", or when budgetDeliverySmoothing is \"accelerated\"."
        budgetRenewal:
          enum:
            - undefined
            - daily
            - monthly
            - lifetime
            - weekly
          type: string
          description: "The period over which the budget is spent.\r\n- \"daily\", \"monthly\", \"weekly\": budget resets at the start of each period.\r\n- \"lifetime\": budget covers the entire ad set duration without resetting.\r\n- \"undefined\": only used when budgetStrategy is \"uncapped\" (no renewal applies). Required for capped budgets (must not be \"undefined\")."
        budgetStrategy:
          enum:
            - capped
            - uncapped
          type: string
          description: "Controls whether the ad set has a spending limit.\r\n- \"capped\": spending is limited to budgetAmount. Requires budgetAmount (non-null), budgetRenewal (not \"undefined\"), and budgetDeliverySmoothing (not null).\r\n- \"uncapped\": no spending limit. budgetAmount is null, budgetRenewal is \"undefined\", and budgetDeliverySmoothing is null."
        pacingBehavior:
          enum:
            - undefined
            - targetFullBudget
            - targetAverageDailyBudget
          type: string
          description: "Controls how a standard capped budget is paced.\r\n- \"targetFullBudget\": spend toward the full budget amount within the renewal period.\r\n- \"targetAverageDailyBudget\": spend toward an average daily amount. Only supported for capped, standard, monthly budgets.\r\n- \"undefined\": no explicit pacing behavior. Required for uncapped budgets and accelerated budgets."
      description: "Budget create model for an ad set.\r\nFor \"capped\": budgetAmount (required, non-null), budgetRenewal (required, not \"undefined\"), and budgetDeliverySmoothing (required) must all be provided.\r\npacingBehavior is optional; \"targetAverageDailyBudget\" is only supported for capped, standard, monthly budgets.\r\nFor \"uncapped\": budgetAmount must be null, budgetRenewal must be \"undefined\", budgetDeliverySmoothing, budgetDeliveryWeek, and pacingBehavior must be omitted or \"undefined\".\r\nFor marketing campaigns with budget automation enabled, omit this object.\r\nIn that case, the ad set budget is initialized from the marketing campaign spend limit amount and renewal period."
    CreateAdSetScheduleV26Q1:
      required:
        - startDate
      type: object
      properties:
        endDate:
          type: string
          format: date-time
          nullable: true
        startDate:
          type: string
          format: date-time
      description: ad set schedule create model
    CreateAdSetTargetingV26Q1:
      required:
        - frequencyCapping
      type: object
      properties:
        deliveryLimitations:
          $ref: '#/components/schemas/AdSetDeliveryLimitationsV26Q1'
        frequencyCapping:
          $ref: '#/components/schemas/AdSetFrequencyCappingV26Q1'
        geoLocation:
          $ref: '#/components/schemas/CreateAdSetGeoLocationV26Q1'
      description: Targeting configuration of the ad set
    ReadAdSetAttributionConfigurationV26Q1:
      type: object
      properties:
        attributionMethod:
          enum:
            - unknown
            - criteoAttribution
            - googleAnalyticsLastClick
            - googleAnalyticsDataDriven
            - lastClick
            - postClick
            - sftp
            - googleAnalytics
          type: string
          description: "Ad set attribution method.\r\nThis defines how certain events (visits, clicks, sales...) are attributed to the ad set.\r\n            \r\nPossible values:\r\n- unknown\r\n- criteoAttribution (default attribution method)\r\n- googleAnalyticsLastClick (requires Google Analytics integration)\r\n- postClick\r\n- sftp\r\n- googleAnalytics (requires Google Analytics integration)"
          nullable: true
        lookbackWindow:
          enum:
            - unknown
            - 30M
            - 24H
            - 7D
            - 30D
          type: string
          description: >-
            The lookback window. Optional, should be specified only for
            attribution methods PostClick and LastClick.
          nullable: true
      description: "Read model for an ad set's attribution configuration.\r\n            \r\nThe lookback window is only set for ad sets with an attribution method that is postClick or googleAnalyticsLastClick.\r\nIt will be null with any other attribution method."
      nullable: true
    ReadAdSetBiddingV26Q1:
      type: object
      properties:
        bidAmount:
          type: number
          description: "Decimal value target relating to the `adSetObjective` specified.\r\nMay be `null` for objectives that do not require a target value.\r\nAt most 4 decimals are supported. Additional decimals are rounded."
          format: double
          nullable: true
        costController:
          enum:
            - COS
            - maxCPC
            - CPI
            - CPM
            - CPO
            - CPSV
            - CPV
            - dailyBudget
            - targetCPM
          type: string
          description: "Cost controller for the ad set.\r\n            \r\nPossible values:\r\n- COS\r\n- maxCPC\r\n- CPI\r\n- CPM\r\n- CPO\r\n- CPSV\r\n- CPV\r\n- dailyBudget\r\n- targetCPM"
          nullable: true
      description: Ad set bidding read configuration.
      nullable: true
    ReadAdSetBudgetV26Q1:
      type: object
      properties:
        budgetAmount:
          type: number
          description: >-
            Maximum budget amount in the advertiser's currency per renewal
            period. Required non-null when capped. Must be null when uncapped.
          format: double
          nullable: true
        budgetDeliverySmoothing:
          enum:
            - accelerated
            - standard
          type: string
          description: "Pacing strategy for spending the budget within a renewal period. Only applicable when budgetStrategy is \"capped\".\r\n- \"accelerated\": spend pacing is based on delivery efficiency rather than the full budget period.\r\n- \"standard\": spread spending evenly over the renewal period.\r\nWhen budgetStrategy is \"uncapped\", this field is not set (null in read responses, omit in create/patch requests)."
          nullable: true
        budgetDeliveryWeek:
          enum:
            - undefined
            - mondayToSunday
            - tuesdayToMonday
            - wednesdayToTuesday
            - thursdayToWednesday
            - fridayToThursday
            - saturdayToFriday
            - sundayToSaturday
          type: string
          description: "Defines which day-of-week boundaries are used for weekly budget renewal. Only applicable when budgetStrategy is \"capped\", budgetRenewal is \"weekly\", and budgetDeliverySmoothing is \"standard\".\r\n- \"mondayToSunday\", \"tuesdayToMonday\", etc.: the day range over which the weekly budget is paced. Changing this value on the active budget also propagates to all scheduled budgets of the same ad set.\r\n- \"undefined\": used when budgetStrategy is \"uncapped\", when budgetRenewal is not \"weekly\", or when budgetDeliverySmoothing is \"accelerated\"."
          nullable: true
        budgetRenewal:
          enum:
            - undefined
            - daily
            - monthly
            - lifetime
            - weekly
          type: string
          description: "The period over which the budget is spent.\r\n- \"daily\", \"monthly\", \"weekly\": budget resets at the start of each period.\r\n- \"lifetime\": budget covers the entire ad set duration without resetting.\r\n- \"undefined\": only used when budgetStrategy is \"uncapped\" (no renewal applies). Required for capped budgets (must not be \"undefined\")."
          nullable: true
        budgetStrategy:
          enum:
            - capped
            - uncapped
          type: string
          description: "Controls whether the ad set has a spending limit.\r\n- \"capped\": spending is limited to budgetAmount. Requires budgetAmount (non-null), budgetRenewal (not \"undefined\"), and budgetDeliverySmoothing (not null).\r\n- \"uncapped\": no spending limit. budgetAmount is null, budgetRenewal is \"undefined\", and budgetDeliverySmoothing is null."
          nullable: true
        pacingBehavior:
          enum:
            - undefined
            - targetFullBudget
            - targetAverageDailyBudget
          type: string
          description: "Controls how a standard capped budget is paced.\r\n- \"targetFullBudget\": spend toward the full budget amount within the renewal period.\r\n- \"targetAverageDailyBudget\": spend toward an average daily amount. Only supported for capped, standard, monthly budgets.\r\n- \"undefined\": no explicit pacing behavior. Required for uncapped budgets and accelerated budgets."
          nullable: true
      description: "Budget configuration for an ad set. Controls how much can be spent and how spending is paced.\r\nWhen budgetStrategy is \"capped\": budgetAmount, budgetRenewal, and budgetDeliverySmoothing are all set.\r\nWhen budgetStrategy is \"uncapped\": budgetAmount is null, budgetRenewal is \"undefined\", budgetDeliverySmoothing is null, budgetDeliveryWeek is \"undefined\", and pacingBehavior is \"undefined\"."
      nullable: true
    ReadAdSetScheduleV26Q1:
      type: object
      properties:
        activationStatus:
          enum:
            - 'on'
            - 'off'
          type: string
          description: >-
            Activation status of the ad set, i.e. whether the consumer wants it
            to deliver
          nullable: true
        deliveryStatus:
          enum:
            - draft
            - inactive
            - live
            - notLive
            - pausing
            - paused
            - scheduled
            - ended
            - notDelivering
            - archived
          type: string
          description: "Delivery status of the ad set, i.e. whether the ad set is delivering.\r\n            \r\nPossible values:\r\n- draft\r\n- inactive\r\n- live\r\n- notLive\r\n- pausing\r\n- paused\r\n- scheduled\r\n- ended\r\n- notDelivering\r\n- archived"
          nullable: true
        endDate:
          $ref: '#/components/schemas/NillableDateTime'
        startDate:
          $ref: '#/components/schemas/NillableDateTime'
      description: Ad set schedule read model
      nullable: true
    AdSetTargetingV26Q1:
      type: object
      properties:
        deliveryLimitations:
          $ref: '#/components/schemas/AdSetDeliveryLimitationsV26Q1'
        frequencyCapping:
          type: object
          properties:
            value:
              $ref: '#/components/schemas/AdSetFrequencyCappingV26Q1'
          nullable: true
        geoLocation:
          $ref: '#/components/schemas/AdSetGeoLocationV26Q1'
      description: ad set targeting model
      nullable: true
    AdSetDeliveryLimitationsV26Q1:
      type: object
      properties:
        devices:
          type: array
          items:
            enum:
              - other
              - desktop
              - mobile
              - tablet
            type: string
            description: "Targeted device type.\r\n            \r\nPossible values:\r\n- other\r\n- desktop\r\n- mobile\r\n- tablet"
          description: "List of devices which the ad set should target.\r\n            \r\nNo limitation if the list is empty."
          nullable: true
        environments:
          type: array
          items:
            enum:
              - web
              - inApp
            type: string
            description: "Targeted environment type.\r\n            \r\nNote: this is very different from AdSetDestinationEnvironment: this parameter defines a delivery limitation,\r\nnot an impression's destination.\r\n            \r\nPossible values:\r\n- web\r\n- inApp"
          description: "List of environments which the ad set should target.\r\n            \r\nNo limitation if the list is empty."
          nullable: true
        operatingSystems:
          type: array
          items:
            enum:
              - android
              - ios
              - unknown
            type: string
            description: "Targeted operating system.\r\n            \r\nPossible values:\r\n- android\r\n- ios\r\n- unknown"
          description: "List of operating systems which the ad set should target.\r\n            \r\nNo limitation if the list is empty."
          nullable: true
      description: Delivery limitations for an ad set.
      nullable: true
    AdSetFrequencyCappingV26Q1:
      type: object
      properties:
        frequency:
          enum:
            - hourly
            - daily
            - lifetime
            - advanced
          type: string
          description: "Period on which impression limitation is calculated.\r\n            \r\nPossible values:\r\n- hourly\r\n- daily\r\n- lifetime\r\n- advanced"
          nullable: true
        maximumImpressions:
          type: integer
          description: Maximum impressions for the specified period.
          format: int32
          nullable: true
      description: "Ad set frequency capping.\r\n            \r\nSettings that can limit the number of impression by viewer and by period."
      nullable: true
    CreateAdSetGeoLocationV26Q1:
      type: object
      properties:
        countries:
          $ref: '#/components/schemas/AdSetTargetingRuleV26Q1'
        subdivisions:
          $ref: '#/components/schemas/AdSetTargetingRuleV26Q1'
        zipCodes:
          $ref: '#/components/schemas/AdSetTargetingRuleV26Q1'
      description: Geolocation configuration of the ad set
    NillableDateTime:
      type: object
      properties:
        value:
          type: string
          format: date-time
          nullable: true
      description: >-
        structure that encapsulates an object that have valid business null
        values. If the structure is provided (i.e. not null), then the value in
        it, even null, is provided.
      nullable: true
    AdSetGeoLocationV26Q1:
      type: object
      properties:
        countries:
          $ref: '#/components/schemas/NillableAdSetTargetingRuleV26Q1'
        subdivisions:
          $ref: '#/components/schemas/NillableAdSetTargetingRuleV26Q1'
        zipCodes:
          $ref: '#/components/schemas/NillableAdSetTargetingRuleV26Q1'
      description: Ad set geolocation options.
      nullable: true
    AdSetTargetingRuleV26Q1:
      type: object
      properties:
        operand:
          enum:
            - undefined
            - in
            - notIn
          type: string
        values:
          type: array
          items:
            type: string
          nullable: true
      description: ad set targeting rule model
    NillableAdSetTargetingRuleV26Q1:
      type: object
      properties:
        value:
          type: object
          allOf:
            - $ref: '#/components/schemas/AdSetTargetingRuleV26Q1'
          nullable: true
      description: >-
        structure that encapsulates an object that have valid business null
        values. If the structure is provided (i.e. not null), then the value in
        it, even null, is provided.
      nullable: true
  securitySchemes:
    oauth:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.criteo.com/oauth2/token
          scopes: {}
        authorizationCode:
          authorizationUrl: https://api.criteo.com/oauth2
          tokenUrl: https://api.criteo.com/oauth2/token
          scopes: {}

````