GuidesAPI ReferenceChangelog
GuidesAPI ReferenceChangelogLog In
Guides

Campaigns

View and manage all your campaigns

📝

A FEW THINGS TO KNOW

Learn more about campaign management with our API Here!

 

Endpoints

VerbEndpointDescription
POST/accounts/{accountId}/campaignsCreate a Campaign
GET/accounts/{accountId}/campaignsGet All Campaigns
GET/campaigns/{campaignId}Get a Specific Campaign
PUT/campaigns/{campaignId}Update a Specific Campaign

📘

Info

  • Create operations using the POST method expect every Required field; omitting Optional fields will set those fields to Default values
  • Update operations using the PUT method except for every Write field; omitting these fields is equivalent to setting them to null, if possible

Campaign Attributes

id

    Data Type: string

    Description: Campaign ID

    Accepted Value: int64

    Default Values: None

    Write? No

    Nullable? No

accountId Required

    Data Type: string

    Description: Account ID

    Accepted Value: int64

    Default Value: None

    Write? No

    Nullable? No

name Required

    Data Type: string

    Description: Campaign name; must be unique within an account

    Values: 255 char limit

    Default Value: None

    Write? Yes

    Nullable? No

type Optional

    Data Type: enum

    Description: Campaing type

    Accepted Values: auction, preferred

    Default Value: auction

    Write? None other than the accepted values

    Nullable? No - if attribute is passed in the call, a value must be specified

budget Optional

    Data Type: number

    Description: Campaign lifetime spend cap; uncapped if omitted or set to null. Note that preferred campaign types cannot have budgets as these campaings types must be uncapped.

    Accepted Values: at least 0

    Default Value: null

    Write? Yes

    Nullable? Yes

budgetSpent Optional

    Data Type: number

    Description: Amount the campaign has already spent

    Accepted Values: at least 0

    Default Value: 0.0

    Write? No

    Nullable? No

budgetRemaining

    Data Type: number

    Description: Amount the campaign has remaining until cap is hit; null if budget is uncapped

    Accepted Values: between 0 and budget Amount

    Default Value: null

    Write? No

    Nullable? Yes

clickAttributionWindow Required

    Data Type: enum

    Description: Post-click attribution window

    Accepted Values: 7D, 14D, 30D, unknown

    Default Value: 30D

    Write? Yes

    Nullable? No

viewAttributionWindow Required

    Data Type: enum

    Description: Post-view attribution window

    Accepted Values: None, 7D, 14D, 30D, unknown

    Default Value: None

    Write? Yes

    Nullable? No

clickAttributionScope

    Data Type: enum

    Description: Post-click attribution scope

    Accepted Values: samesku, sameskucategory, sameskucategorybrand, unknown For more information on what these values mean please refer to this page. Note, if you select sameskucategory the resulting logic allows for attribution to be awarded to an event for the given sku, OR a sku with the same category, and if you select sameskucategorybrand the resulting logic allows for attribution to be awarded to an event for the given sku, OR a sku with the same category, OR a sku with the same brand

    Default Value: sameskucategory

    Write? None other than the accepted values

    Nullable? No

viewAttributionScope

    Data Type: enum

    Description: Post-view attribution scope

    Accepted Values: samesku, sameskucategory, sameskucategorybrand For more information on what these values mean please refer to this page. Note, if you select sameskucategory the resulting logic allows for attribution to be awarded to an event for the given sku, OR a sku with the same category, and if you select sameskucategorybrand the resulting logic allows for attribution to be awarded to an event for the given sku, OR a sku with the same category, OR a sku with the same brand

    Default Value: sameskucategory

    Write? None other than the accepted values

    Nullable? No

promotedBrandIds

    Data Type: string array

    Description: Set of brands represented in line items of the campaign; note this set is append only

    Accepted Values: list of brandId

    Default Value: [ ]

    Write? No

    Nullable? No

drawableBalanceIds

    Data Type: string array

    Description: List of balances the campaign is able to draw from; at least one balance is required for a campaign to begin

    Accepted Values: list of balanceId

    Default Value: [ ]

    Write? No

    Nullable? No

status

    Data Type: enum

    Description: Campaign status, derived from the status of line items it holds; active if at least one line item is active. To understand the conditions that will cause a status to change, check out our status page

    Accepted Values: active, inactive

    Default Value: inactive

    Write? No

    Nullable? No

monthlyPacing Optional

    Data Type: decimal

    Description: The maximum monthly spend allowed for the campaign in the currency of the account. The spend is constrained by remaining account balance and total budget of the campaign. Monthly budget spend reset monthly at the start of the month based on the account timezone.

    Accepted Values: null or a value that is greater or equal to 0.01

    Default Value: null

    Write? Yes

    Nullable? Yes

dailyPacing Optional

    Data Type: decimal

    Description: The maximum daily spend allowed for the campaign in the currency of the account. As long as the parameter is not set to null and auto daily pacing is not set to true then monthly pacing will be applied to the campaign.

    • If monthly pacing is set to null and auto daily pacing is set to false, then no daily spend limit will be enforced.

    • The maximum daily spend allowed for the campaign in the currency of the account.
    •  

    Accepted Values: null or a value that is greater or equal to 0.01

    Default Value: null

    Write? Yes

    Nullable? Yes

isAutoDailyPacing Required

    Data Type: boolean

    Description: Auto daily pacing flag for the campaign budget. The daily pacing value is automatically calculated with respect to the days left in the month for the account. The campaign's remaining account balance, total budget, and monthly pacing value is constrained by the account timezone and the campaign status. If auto daily pacing is enabled, dailyPacing value should be left empty (null). Note the value may be affected by budget override. Daily budget spend is reset daily at the start of the day based on the account timezone.

    Accepted Values: true, false

    Default Value: N/A

    Write? Yes

    Nullable? No

startDate Optional

    Data Type: date-time

    Description: Campaign start date. The campaign start inactive if invalid start date is not today or end date is in previous day.

    Accepted Values: YYYY-MM-DD

    Default Value: Null

    Write? Yes

    Nullable? Yes

endDate Optional

    Data Type: date-time

    Description: Campaign end date

    Accepted Values: YYYY-MM-DD

    Default Value: Null

    Write? Yes

    Nullable? Yes

createdAt

    Data Type: timestamp

    Description: Timestamp in UTC of campaign creation

    Accepted Values: ISO-8601

    Default Value: N/A

    Write? No

    Nullable? No

updatedAt

    Data Type: timestamp

    Description: Timestamp in UTC of last campaign update

    Accepted Values: ISO-8601

    Default Value: N/A

    Write? No

    Nullable? No

companyName

    Data Type: string

    Values: Company name

    Description: This optional field, exclusively accessible to marketplaces within the European Union, will display the name of the company associated with the advertisement.

    📃 Digital Service Act (DSA)
    In compliance with the Digital Services Act (DSA), marketplaces within the European Union will receive information about the company name associated with each advertisement.

 

Create a Campaign

This endpoint creates a new campaign in the specified account.

https://api.criteo.com/{version}/retail-media/accounts/{accountId}/campaigns

Sample Request

curl -L 'https://api.criteo.com/2024-01/retail-media/accounts/5/campaigns' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{
    "data": {
        "type": "<string>",
        "attributes": {
            "name": "Valentine Day Sale",
            "isAutoDailyPacing": "false",
            "startDate": "2024-02-12",
            "endDate": "2024-02-15",
            "type": "auction",
            "drawableBalanceIds": [
                "142000305654435840"
            ],
	    "clickAttributionWindow": "30D",
	    "viewAttributionWindow": "None",
            "budget": "100",
            "monthlyPacing": "50",
            "dailyPacing": "10",
	    "clickAttributionScope": "sameSkuCategory",
	    "viewAttributionScope": "sameSkuCategory",
            "companyName": "ABC Test Company"
        }
    }
}'
import http.client
import json

conn = http.client.HTTPSConnection("api.criteo.com")
payload = json.dumps({
  "data": {
    "type": "<string>",
    "attributes": {
      "name": "Valentine Day Sale",
      "isAutoDailyPacing": "false",
      "startDate": "2024-02-12",
      "endDate": "2024-02-15",
      "type": "auction",
      "drawableBalanceIds": [
        "142000305654435840"
      ],
      "clickAttributionWindow": "30D",
      "viewAttributionWindow": "None",
      "budget": "100",
      "monthlyPacing": "50",
      "dailyPacing": "10",
      "clickAttributionScope": "sameSkuCategory",
      "viewAttributionScope": "sameSkuCategory",
      "companyName": "ABC Test Company"
    }
  }
})
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer <TOKEN>'
}
conn.request("POST", "/2023-10/retail-media/accounts/5/campaigns", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"data\": {\n        \"type\": \"<string>\",\n        \"attributes\": {\n            \"name\": \"Valentine Day Sale\",\n            \"isAutoDailyPacing\": \"false\",\n            \"startDate\": \"2024-02-12\",\n            \"endDate\": \"2024-02-15\",\n            \"type\": \"auction\",\n            \"drawableBalanceIds\": [\n                \"142000305654435840\"\n            ],\n\t\t\t\"clickAttributionWindow\": \"30D\",\n\t\t\t\"viewAttributionWindow\": \"None\",\n            \"budget\": \"100\",\n            \"monthlyPacing\": \"50\",\n            \"dailyPacing\": \"10\",\n\t\t\t\"clickAttributionScope\": \"sameSkuCategory\",\n\t\t\t\"viewAttributionScope\": \"sameSkuCategory\",\n            \"companyName\": \"ABC Test Company\"\n        }\n    }\n}");
Request request = new Request.Builder()
  .url("https://api.criteo.com/2023-10/retail-media/accounts/5/campaigns")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Accept", "application/json")
  .addHeader("Authorization", "Bearer <TOKEN>")
  .build();
Response response = client.newCall(request).execute();
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.criteo.com/2023-10/retail-media/accounts/5/campaigns');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer <TOKEN>'
));
$request->setBody('{\n    "data": {\n        "type": "<string>",\n        "attributes": {\n            "name": "Valentine Day Sale",\n            "isAutoDailyPacing": "false",\n            "startDate": "2024-02-12",\n            "endDate": "2024-02-15",\n            "type": "auction",\n            "drawableBalanceIds": [\n                "142000305654435840"\n            ],\n			"clickAttributionWindow": "30D",\n			"viewAttributionWindow": "None",\n            "budget": "100",\n            "monthlyPacing": "50",\n            "dailyPacing": "10",\n			"clickAttributionScope": "sameSkuCategory",\n			"viewAttributionScope": "sameSkuCategory",\n            "companyName": "ABC Test Company"\n        }\n    }\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}

Sample Response

{
    "data": {
        "id": "544937665113018368",
        "type": "RetailMediaCampaignV202301",
        "attributes": {
            "accountId": "5",
            "promotedBrandIds": [],
            "budgetSpent": 0.00000000,
            "budgetRemaining": 100.00000000,
            "status": "inactive",
            "createdAt": "2024-02-12T17:47:43+00:00",
            "updatedAt": "2024-02-12T17:47:43+00:00",
            "type": "auction",
            "drawableBalanceIds": [
                "142000305654435840"
            ],
            "clickAttributionWindow": "30D",
            "viewAttributionWindow": "1D",
            "name": "Valentine Day Sale",
            "budget": 100.00000000,
            "monthlyPacing": 50.00000000,
            "dailyPacing": 10.00000000,
            "isAutoDailyPacing": false,
            "startDate": "2024-02-12T00:00:00+00:00",
            "endDate": "2024-02-15T00:00:00+00:00",
            "clickAttributionScope": "sameSkuCategory",
            "viewAttributionScope": "sameSkuCategory",
            "companyName": "ABC Test Company"
        }
    }
}

Get All Campaigns By Account Id

This endpoint lists all campaigns in the specified account. Results are paginated.

https://api.criteo.com/{version}/retail-media/accounts/{accountId}/campaigns

Sample Request

curl -L -X GET 'https://api.criteo.com/2024-01/retail-media/accounts/5/campaigns' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <MY_ACCESS_TOKEN>'
import requests

url = "https://api.criteo.com/2023-01/retail-media/accounts/4/campaigns"

payload={}
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer <MY_ACCESS_TOKEN>'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();

MediaType mediaType = MediaType.parse("text/plain");

RequestBody body = RequestBody.create(mediaType, "");

Request request = new Request.Builder()
  .url("https://api.criteo.com/2023-01/retail-media/accounts/4/campaigns")
  .method("GET", body)
  .addHeader("Accept", "application/json")
  .addHeader("Authorization", "Bearer <MY_ACCESS_TOKEN>")
  .build();

Response response = client.newCall(request).execute();
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.criteo.com/2023-01/retail-media/accounts/4/campaigns');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));

$request->setHeader(array(
  'Accept' => 'application/json',
  'Authorization' => 'Bearer <MY_ACCESS_TOKEN>'
));

try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}

catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}

Sample Response

{
    "metadata": {
        "totalItemsAcrossAllPages": 306,
        "currentPageSize": 2,
        "currentPageIndex": 8,
        "totalPages": 153,
        "nextPage": "https://api.criteo.com/2024-01/retail-media/accounts/5/campaigns?pageIndex=9&pageSize=2",
        "previousPage": "https://api.criteo.com/2024-01/retail-media/accounts/5/campaigns?pageIndex=7&pageSize=2"
    },
    "data": [
        {
            "id": "360028769027026944",
            "type": "RetailMediaCampaignV202301",
            "attributes": {
                "accountId": "5",
                "promotedBrandIds": [],
                "budgetSpent": 0.00000000,
                "budgetRemaining": null,
                "status": "inactive",
                "createdAt": "2022-09-20T11:45:47+00:00",
                "updatedAt": "2023-09-12T13:50:06+00:00",
                "type": "preferred",
                "drawableBalanceIds": [],
                "clickAttributionWindow": "14D",
                "viewAttributionWindow": "14D",
                "name": "Spring Sale 1",
                "budget": null,
                "monthlyPacing": null,
                "dailyPacing": null,
                "isAutoDailyPacing": false,
                "startDate": null,
                "endDate": null,
                "clickAttributionScope": "sameSkuCategory",
                "viewAttributionScope": "sameSkuCategory",
                "companyName": null
            }
        },
        {
            "id": "360029773808807936",
            "type": "RetailMediaCampaignV202301",
            "attributes": {
                "accountId": "5",
                "promotedBrandIds": [
                    "82539",
                    "105804",
                    "113465",
                    "117905",
                    "120242",
                    "125722",
                    "126509",
                    "135449",
                    "190104",
                    "2000000201",
                    "2000002375",
                    "2000002969"
                ],
                "budgetSpent": 0.00000000,
                "budgetRemaining": 555.00000000,
                "status": "inactive",
                "createdAt": "2022-09-20T11:49:47+00:00",
                "updatedAt": "2023-09-12T13:50:06+00:00",
                "type": "auction",
                "drawableBalanceIds": [],
                "clickAttributionWindow": "30D",
                "viewAttributionWindow": "1D",
                "name": "Spring Sales 2",
                "budget": 555.00000000,
                "monthlyPacing": null,
                "dailyPacing": null,
                "isAutoDailyPacing": false,
                "startDate": "2022-09-20T04:00:00+00:00",
                "endDate": "2022-09-21T03:59:59+00:00",
                "clickAttributionScope": "sameSkuCategory",
                "viewAttributionScope": "sameSku",
                "companyName": null
            }
        }
    ]
}

Get a Specific Campaign

This endpoint retrieves the specified campaign.

https://api.criteo.com/{version}/retail-media/campaigns/{campaignId}

Sample Request

curl -L -X GET 'https://api.criteo.com/2024-01/retail-media/campaigns/1240' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <MY_ACCESS_TOKEN>'
import http.client

conn = http.client.HTTPSConnection("api.criteo.com")
payload = ''
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer <MY_ACCESS_TOKEN>'
}
conn.request("GET", "/2023-01/retail-media/campaigns/1240", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://api.criteo.com/2023-01/retail-media/campaigns/1240")
  .method("GET", body)
  .addHeader("Accept", "application/json")
  .addHeader("Authorization", "Bearer <MY_ACCESS_TOKEN>")
  .build();
Response response = client.newCall(request).execute();
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.criteo.com/2023-01/retail-media/campaigns/1240');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Accept' => 'application/json',
  'Authorization' => 'Bearer MY_ACCESS_TOKEN>'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}

Sample Response

{
    "data": {
        "id": "544937665113018368",
        "type": "RetailMediaCampaignV202301",
        "attributes": {
            "accountId": "5",
            "promotedBrandIds": [],
            "budgetSpent": 0.00000000,
            "budgetRemaining": null,
            "status": "inactive",
            "createdAt": "2024-02-12T17:47:43+00:00",
            "updatedAt": "2024-02-12T17:56:04+00:00",
            "type": "auction",
            "drawableBalanceIds": [
                "142000305654435840"
            ],
            "clickAttributionWindow": "30D",
            "viewAttributionWindow": "1D",
            "name": "Valentine Day Sale",
            "budget": null,
            "monthlyPacing": 50.00000000,
            "dailyPacing": null,
            "isAutoDailyPacing": false,
            "startDate": "2024-02-12T00:00:00+00:00",
            "endDate": "2024-02-15T00:00:00+00:00",
            "clickAttributionScope": "sameSku",
            "viewAttributionScope": "sameSku",
            "companyName": "ABC Test Company"
        }
    }
}

Update a Specific Campaign

This endpoint updates the specified campaign. In this example, we switch to an uncapped campaign budget and update the post-view attribution window.

https://api.criteo.com/{version}/retail-media/campaigns/{campaignId}

Sample Request

curl -L -X PUT 'https://api.criteo.com/2024-01/retail-media/campaigns/544937665113018368' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{
	"data": {
		"id": "544937665113018368",
		"type": "UpdateCampaign",
        "attributes": {
            "name": "Valentine Day Sale",
            "isAutoDailyPacing": "false",
            "startDate": "2024-02-12",
            "endDate": "2024-02-15",
            "type": "auction",
            "drawableBalanceIds": [
                "142000305654435840"
            ],
	    "clickAttributionWindow": "30D",
	    "viewAttributionWindow": "1D",
            "budget": null,
            "monthlyPacing": "50",
            "dailyPacing": "10",
	    "clickAttributionScope": "samesku",
	    "viewAttributionScope": "samesku",
            "companyName": "ABC Test Company"
        }
	}
}'
import http.client
import json

conn = http.client.HTTPSConnection("api.criteo.com")
payload = json.dumps({
  "data": {
    "id": "544937665113018368",
    "type": "UpdateCampaign",
    "attributes": {
      "name": "Valentine Day Sale",
      "isAutoDailyPacing": "false",
      "startDate": "2024-02-12",
      "endDate": "2024-02-15",
      "type": "auction",
      "drawableBalanceIds": [
        "142000305654435840"
      ],
      "clickAttributionWindow": "30D",
      "viewAttributionWindow": "1D",
      "budget": None,
      "monthlyPacing": "50",
      "dailyPacing": "10",
      "clickAttributionScope": "samesku",
      "viewAttributionScope": "samesku",
      "companyName": "ABC Test Company"
    }
  }
})
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer <TOKEN>'
}
conn.request("PUT", "/2023-10/retail-media/campaigns/544937665113018368", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n\t\"data\": {\n\t\t\"id\": \"544937665113018368\",\n\t\t\"type\": \"UpdateCampaign\",\n        \"attributes\": {\n            \"name\": \"Valentine Day Sale\",\n            \"isAutoDailyPacing\": \"false\",\n            \"startDate\": \"2024-02-12\",\n            \"endDate\": \"2024-02-15\",\n            \"type\": \"auction\",\n            \"drawableBalanceIds\": [\n                \"142000305654435840\"\n            ],\n\t\t\t\"clickAttributionWindow\": \"30D\",\n\t\t\t\"viewAttributionWindow\": \"1D\",\n            \"budget\": null,\n            \"monthlyPacing\": \"50\",\n            \"dailyPacing\": \"10\",\n\t\t\t\"clickAttributionScope\": \"samesku\",\n\t\t\t\"viewAttributionScope\": \"samesku\",\n            \"companyName\": \"ABC Test Company\"\n        }\n\t}\n}");
Request request = new Request.Builder()
  .url("https://api.criteo.com/2023-10/retail-media/campaigns/544937665113018368")
  .method("PUT", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Accept", "application/json")
  .addHeader("Authorization", "Bearer <TOKEN>")
  .build();
Response response = client.newCall(request).execute();
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.criteo.com/2023-10/retail-media/campaigns/544937665113018368');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'Bearer<TOKEN>'
));
$request->setBody('{\n	"data": {\n		"id": "544937665113018368",\n		"type": "UpdateCampaign",\n        "attributes": {\n            "name": "Valentine Day Sale",\n            "isAutoDailyPacing": "false",\n            "startDate": "2024-02-12",\n            "endDate": "2024-02-15",\n            "type": "auction",\n            "drawableBalanceIds": [\n                "142000305654435840"\n            ],\n			"clickAttributionWindow": "30D",\n			"viewAttributionWindow": "1D",\n            "budget": null,\n            "monthlyPacing": "50",\n            "dailyPacing": "10",\n			"clickAttributionScope": "samesku",\n			"viewAttributionScope": "samesku",\n            "companyName": "ABC Test Company"\n        }\n	}\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}

Sample Response

{
    "data": {
        "id": "544937665113018368",
        "type": "RetailMediaCampaignV202301",
        "attributes": {
            "accountId": "5",
            "promotedBrandIds": [],
            "budgetSpent": 0.00000000,
            "budgetRemaining": null,
            "status": "inactive",
            "createdAt": "2024-02-12T17:47:43+00:00",
            "updatedAt": "2024-02-12T17:56:04+00:00",
            "type": "auction",
            "drawableBalanceIds": [
                "142000305654435840"
            ],
            "clickAttributionWindow": "30D",
            "viewAttributionWindow": "1D",
            "name": "Valentine Day Sale",
            "budget": null,
            "monthlyPacing": 50.00000000,
            "dailyPacing": null,
            "isAutoDailyPacing": false,
            "startDate": "2024-02-12T00:00:00+00:00",
            "endDate": "2024-02-15T00:00:00+00:00",
            "clickAttributionScope": "sameSku",
            "viewAttributionScope": "sameSku",
            "companyName": "ABC Test Company"
        }
    }
}

Responses

ResponseDescription
🔵 200Call completed with success
🔵 201Campaign was created successfully
🔴 400Validation Error - one or more required field was not found. Confirm if all required fields are present in the API call

Invalid isautodailypacing - Cannot turn on IsAutoDailyPacing and add a DailyPacing value

- IsAutoDailyPacing and Daily Pacing can not be active at the same time. Passing this in the call will return a 400 error

Invalid budget - Budget is not allowed for the Preferred campaign.