---
title: "/2026-01/marketing-solutions/campaigns"
method: POST
path: "/2026-01/marketing-solutions/campaigns"
tags: ["Campaign"]
---

# /2026-01/marketing-solutions/campaigns

`POST /2026-01/marketing-solutions/campaigns`

Create the specified campaign
            
A campaign, or in other words a marketing campaign, is an entity that defines advertising objectives and success criteria.

## Request body

- CreateCampaignRequest — Data model for an input resources
  - `data` CreateCampaignResource — Data model for a Resource
    - `attributes` CreateCampaign — Campaign create model.
      - `advertiserId` string, nullable, required — Advertiser ID this campaign belongs to (string-encoded integer).
      - `budgetAutomation` BudgetAutomation — Budget automation, lets users configure budgets once at the campaign level while Criteo dynamically routes spend toward the best-performing ad sets. If "enabled" is omitted and only "budgetConfiguration" is provided, "enabled" defaults to false — budget automation will not be activated. To activate budget automation at creation, "enabled" must be explicitly set to true along with a valid "budgetConfiguration". If the entire "budgetAutomation" object is omitted from the create request, the campaign is created with budget automation disabled.
        - `budgetConfiguration` BudgetAutomationConfiguration, nullable — Configuration for budget automation. Only meaningful when "enabled" is true. When "enabled" is false or omitted, this field is ignored.
          - `adSetObjectives` 'conversions' | 'revenue' | 'visits' | 'videoViews' — The ad set optimization objective for budget automation. Determines how the automated budget allocates spend across ad sets in the campaign. - "conversions": optimize for conversion events. - "revenue": optimize for revenue. - "visits": optimize for site visits. - "videoViews": optimize for completed video views.
        - `enabled` boolean — Whether budget automation is active for this marketing campaign. - true: budget automation is enabled and "budgetConfiguration" must be provided with a valid objective. - false (default when omitted): budget automation is disabled; "budgetConfiguration" is ignored if provided.
      - `goal` 'Unspecified' | 'Acquisition' | 'Retention', required — Goal of the campaign Serialized values are {Unspecified}, {Acquisition} and {Retention}. Acquisition and retention are defined as follows: - Acquisition: campaign with the goal of acquiring new customers. The success of an acquisition campaign is measured by the number of new customers it brings. - Retention: campaign with the goal of retaining existing customers. The success of a retention campaign is measured by the number of existing customers it retains.
      - `name` string, nullable, required — Name of the campaign
      - `spendLimit` CreateCampaignSpendLimit, required — Spend limit configuration for a marketing campaign. Controls how much can be spent and the renewal cadence. When spendLimitType is "capped": spendLimitAmount and spendLimitRenewal are required. When spendLimitType is "uncapped": spendLimitAmount is null and spendLimitRenewal is "undefined".
        - `spendLimitAmount` number, double, nullable — Maximum spend amount in the advertiser's currency per renewal period. Non-null when capped. null when uncapped.
        - `spendLimitRenewal` 'undefined' | 'daily' | 'monthly' | 'lifetime' — The period over which the spend limit is consumed. - "daily", "monthly": spend limit resets at the start of each period. - "lifetime": spend limit covers the entire campaign duration without resetting. - "undefined": only used when spendLimitType is "uncapped" (no renewal applies).
        - `spendLimitType` 'capped' | 'uncapped', required — Controls whether the campaign has a spending limit. - "capped": spending is limited to spendLimitAmount. Requires spendLimitAmount (non-null) and spendLimitRenewal (not "undefined"). - "uncapped": no spending limit. spendLimitAmount is null and spendLimitRenewal is "undefined".
    - `type` string — Canonical type name of the entity

## Response `201`

The campaign that has been created and errors / warnings

- CampaignV23Q1Response — Data model for response resource
  - `data` CampaignV23Q1Resource, nullable — Data model for a Resource
    - `attributes` CampaignV23Q1, nullable — Campaign read model The {id} field is the campaign identifier (string-encoded integer).
      - `advertiserId` string, nullable — Advertiser id of the campaign (string-encoded integer)
      - `budgetAutomation` CampaignBudgetAutomationV23Q1, nullable — Budget automation, also known as automated budget or budget pacing, lets users configure KPIs and budgets once at the campaign level while Criteo dynamically routes spend toward the best-performing ad sets. When enabled is false, automatedBudgetConfiguration is null. When enabled is true, automatedBudgetConfiguration.adSetOptimizationObjective is expected.
        - `automatedBudgetConfiguration` AutomatedBudgetConfigurationV23Q1, nullable — Detailed configuration used when campaign budget automation is enabled.
          - `adSetOptimizationObjective` 'conversions' | 'revenue' | 'visits' | 'videoViews', nullable — Optimization objective used to automate budget allocation across ad sets. Expected when budgetAutomation.enabled is true. Possible values are "conversions", "revenue", "visits", and "videoViews".
        - `enabled` boolean, nullable — Whether budget automation is enabled for this campaign. This field is always present in the response.
      - `goal` 'unspecified' | 'acquisition' | 'retention', nullable — Goal of the campaign Serialized values are {unspecified}, {acquisition} and {retention}. Acquisition and retention are defined as follows: - Acquisition: campaign with the goal of acquiring new customers. The success of an acquisition campaign is measured by the number of new customers it brings. - Retention: campaign with the goal of retaining existing customers. The success of a retention campaign is measured by the number of existing customers it retains.
      - `id` string, nullable — Id of the entity (duplicate of the parent id).
      - `name` string, nullable — Name of the campaign
      - `spendLimit` CampaignSpendLimitV23Q1, nullable — Campaign spend-limit configuration. A capped spend limit restricts campaign spending per renewal period. An uncapped spend limit does not impose a spending ceiling.
        - `spendLimitAmount` NillableDecimal, nullable — Placeholder object for value for which "null" is a valid business value
          - `value` number, double, nullable — The value. If missing or null the value is set to "null"
        - `spendLimitRenewal` 'undefined' | 'daily' | 'monthly' | 'lifetime', nullable — The period over which the campaign spend limit is applied. When spendLimitType is "capped", this is "daily", "monthly", or "lifetime". When spendLimitType is "uncapped", this is "undefined".
        - `spendLimitType` 'capped' | 'uncapped', nullable — Controls whether the campaign has a spend limit. "capped" returns a non-null spendLimitAmount.value and a spendLimitRenewal of "daily", "monthly", or "lifetime". "uncapped" returns spendLimitAmount.value as null and spendLimitRenewal as "undefined".
    - `id` string, nullable — Id of the entity
    - `type` string, nullable — Canonical type name of the entity
  - `errors` CommonProblem[], nullable
    - `code` string, nullable — A machine-readable error code, expressed as a string value.
    - `detail` string, nullable — A human-readable explanation specific to this occurrence of the problem
    - `instance` string, nullable — A URI that identifies the specific occurrence of the problem.
    - `source` object, nullable — A machine-readable structure to reference to the exact location(s) causing the error(s)
    - `stackTrace` string, nullable
    - `title` string, nullable — A short human-readable description of the problem type
    - `traceId` string, nullable — The request correlation ID this problem comes from.
    - `traceIdentifier` string, nullable — The request correlation ID this problem comes from. (deprecated, use traceId instead)
    - `type` 'unknown' | 'access-control' | 'authentication' | 'authorization' | 'availability' | 'deprecation' | 'quota' | 'validation', nullable — The problem's category.
  - `warnings` CommonProblem[], nullable
    - `code` string, nullable — A machine-readable error code, expressed as a string value.
    - `detail` string, nullable — A human-readable explanation specific to this occurrence of the problem
    - `instance` string, nullable — A URI that identifies the specific occurrence of the problem.
    - `source` object, nullable — A machine-readable structure to reference to the exact location(s) causing the error(s)
    - `stackTrace` string, nullable
    - `title` string, nullable — A short human-readable description of the problem type
    - `traceId` string, nullable — The request correlation ID this problem comes from.
    - `traceIdentifier` string, nullable — The request correlation ID this problem comes from. (deprecated, use traceId instead)
    - `type` 'unknown' | 'access-control' | 'authentication' | 'authorization' | 'availability' | 'deprecation' | 'quota' | 'validation', nullable — The problem's category.

---

[API](https://skmtc.net/criteo/apis/criteo-api.md) · [All operations](https://skmtc.net/criteo/apis/criteo-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/criteo/criteo-api/revisions/c1721589426a/schema)
