Create new campaign
URL: POST /api/v1/campaigns
Note:
- This API supports batch operations with a max batch size of 10. For bulk operation, the advertiser Id must be the same across all requests in the payload.
- You must set all of
budgetType,dailyBudget,totalBudget,startDate,endDate, anddeliverySpeedparameters at same level i.e. either at campaign level or ad group level
Request Parameters
| Parameters | Notes | Type | Required | Possible Values |
|---|---|---|---|---|
| advertiserId | ID of advertiser whose campaign is to be scheduled | integer | Y | Advertiser ID for which the campaign is to be created |
| name | The name of the campaign **_Note_**_: Limit on length of campaign name is 240 characters_ | string | Y | The campaign name should be unique |
| description | Campaign description **_Note_**_: Limit on length of campaign description is 240 characters_ | string | N | Provide valid description corresponding to campaign type |
| objective | Campaign objective | string | N | Values: awareness (default value) engagement conversion **_Note:_** For video campaigns, the only supported objective is `awareness` |
| campaignType | The type of the campaign | string | N | Values of campaignType: ngd |
| mediaType | Specifies the campaign's creative format. | string | N | Values: banner (default value) video |
| startDate | The date to start campaign **_Note_**_: it must be set either at campaign or ad group level_ | date | Conditional.This field is required only if it is not set at ad group level. Cannot be changed to ad group level later. | Date should be in format: yyyy-MM-dd'T'HH:mm:ss.SSSXXX **_Note_**_:_
Kindly take these behaviors into consideration when assigning a value to startDate in your request._ |
| endDate | The date when campaign ends **_Note_**_: it must be set either at campaign or ad group level_ | date | Conditional.This field is required only if it is not set at ad group level. Cannot be changed to ad group level later. | Date should be in format: yyyy-MM-dd'T'HH:mm:ss.SSSXXX To run campaign indefinitely, set its value as ‘9999-12-30T00:00:00Z’ **_Note_**_:_
Kindly take these behaviors into consideration when assigning a value to startDate in your request._ |
| budgetType | The type of budget allocation you want to choose for your campaign **_Note_**_: it must be set either at campaign or ad group level_ _Campaigns scheduled to run indefinitely must use a daily budget_ | string | Conditional.This field is required only if it is not set at ad group level. Cannot be changed to ad group level later. | Values: - daily - total |
| dailyBudget | Daily budget of campaign Note: • Daily budget cannot exceed your total budget amount • Up to 20% of the unspent budget will be rolled over to the next day • It must be set either at campaign or ad group level • Campaigns scheduled to run indefinitely must use a daily budget | double | Conditional. This field is required only if: -It is not set at ad group level. Cannot be changed to ad group level later. -budgetType is set to be daily | The value of daily budget should at least be $0.01 **_Note:_**_ This field is required only if budgetType is set to be dailyBudget_ |
| totalBudget | Total budget of campaign \_ **Note**: it must be set either at campaign or ad group level\_ | double | Conditional. This field is required only if: -It is not set at ad group level. Cannot be changed to ad group level later. -budgetType is set to be total | The value of total budget should at least be $0.01 **_Note_**_: This field is required only if budgetType is set to be totalBudget_ |
| deliverySpeed | Determines pacing of ad delivery **_Note_**_: it must be set either at campaign or ad group level_ | Conditional. This field is required only if it is not set at ad group level. Cannot be changed to ad group level later. | Values: • frontloaded • evenly **_Note_**_: frontloaded pacing is not supported if budgetType is daily_ |
Note:
- You must set all of budgetType, dailyBudget, totalBudget, startDate, endDate, and deliverySpeed parameters at same level i.e. either at campaign level or ad group level, not both
- If startDate, endDate, budgetType, dailyBudget, totalBudget, deliverySpeed are omitted, they must be defined at the ad group level
- You can only set either dailyBudget or totalBudget
- To set daily budget, you must choose value of budgetType as “daily” and then define dailyBudget.
- To set total budget, you must choose value of budgetType as “total” and then define totalBudget.
- When mediaType is set to VIDEO, the allowed objective field is AWARENESS. If nothing is passed the default value will be set to AWARENESS.
- During the campaign auto-setup flow, line items will be created asynchronously. The process may take up to 2 minutes to complete.
- Only BANNER mediaType is allowed in campaign auto setup
Headers
| Header Name | Description | Required | Values |
|---|---|---|---|
| Authorization | The token will provide you the access to the API. It is same for all advertisers you access through the API. | Y | Please utilize the generated auth_token shared with you at the time of partner onboarding from the Getting Started Guide |
| Content-Type | Format of the message body | Y | application/json |
| WM_CONSUMER.ID | Unique ID for consumer. We will provide you the consumer ID to access the API. It is same for all advertisers you access through the API. | Y | Please use the generated ConsumerId shared with you at the time of partner onboarding. Refer to the Getting Started Guide for more information |
| WM_SEC.AUTH_SIGNATURE | Signature for authentication | Y | Use the signature generator code from Getting Started Guide to generate this value |
| WM_SEC.KEY_VERSION | Key version. We will provide you with the KEY VERSION to access the API. It is same for all advertisers you access through the API. | Y | 1 |
| WM_CONSUMER.intimestamp | Timestamp for which the auth signature is generated. Use Unix epoch format for the timestamp. | Y | Use the signature generator code from Getting Started Guide to generate this value |
Sample Request
curl -X POST \ 'https://developer.api.us.stg.walmart.com/api-proxy/service/display/api/v1/api/v1/campaigns' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <auth_token>'
--header 'WM_SEC.AUTH_SIGNATURE: **************' \ --header 'WM_SEC.KEY_VERSION: 1' \ --header 'WM_CONSUMER.ID: adfwe-v23-faasd2r-afs-asdfqeff' \ --header 'WM_CONSUMER.intimestamp: 1565309779' --data '[ { "advertiserId": 1, "name": "string", "description": "string", "objective": "string", "campaignType": "ngd", "startDate": "string", "endDate": "string", "budgetType": "daily", "dailyBudget": 1.0, "deliverySpeed": "evenly" } ]'
Sample Request (Batch Operation)
curl -X POST \ 'https://developer.api.us.stg.walmart.com/api-proxy/service/display/api/v1/api/v1/campaigns' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <auth_token>'
--header 'WM_SEC.AUTH_SIGNATURE: **************' \ --header 'WM_SEC.KEY_VERSION: 1' \ --header 'WM_CONSUMER.ID: adfwe-v23-faasd2r-afs-asdfqeff' \ --header 'WM_CONSUMER.intimestamp: 1565309779' --data ' [ { "advertiserId": 1, "name": "string", "description": "string", "objective": "string", "campaignType": "ngd", "startDate": "string", "endDate": "string", "budgetType": "string", "totalBudget": 10.0, "deliverySpeed": "evenly" }, { "advertiserId": 1, "name": "string", "description": "string", "objective": "string", "campaignType": "ngd", "startDate": "string", "endDate": "string", "budgetType": "string", "totalBudget": 10.0, "deliverySpeed": "frontloaded" }
]'Sample Request: Create campaign with mediaType as VIDEO
mediaType as VIDEOcurl -X POST \ 'https://developer.api.us.walmart.com/api-proxy/service/display/api/v1/api/v1/campaigns' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <auth_token>' \
--header 'WM_SEC.AUTH_SIGNATURE: ***********' \
--header 'WM_CONSUMER.ID: abcde-v123-fa2r-a1fs-asd45f6qef' \
--header 'WM_SEC.KEY_VERSION: 1' \
--header 'WM_CONSUMER.intimestamp: 1565309779' \
--data '[{ "advertiserId": 1, "name": "string", "description": "string", "objective": "AWARENESS", "campaignType": "NGD", "startDate": "2025-01-01T12:00:00.000Z", "endDate": "2025-01-31T12:00:00.000Z", "budgetType": "TOTAL", "totalBudget": 10000.0, "deliverySpeed": "EVENLY", "mediaType": "VIDEO" }
]'Response
| Element | Description | Type |
|---|---|---|
| code | The response code can have following values:
Click here for more information about Status Codes and Errors | string |
| details | Details will populate success or error message depending upon value of code | string |
| campaignId | ID of the campaign. This will be returned only when code=success | integer |
| name | Name of the campaign | string |
Sample Response
[ { "code": "success", "details": ["string"], "name": "string1", "campaignId": 1 } ]
Sample Response (Batch Operation)
[ { "code": "success", "details": ["string"], "name": "string1", "campaignId": 1 }, { "code": "failure", "details": ["stringA", "stringB"], "name": "string1" } ]
Updated 8 days ago
