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) engagementconversion 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. Required only if it is not set at ad group level. Cannot be changed to ad group level later. | Date format: yyyy-MM-dd'T'HH:mm:ss.SSSXXX Notes: - All timestamp values must be in ISO 8601 format (e.g. 2025-07-20T19:10:10-05:00) - All date-time values are internally converted to Eastern Time (ET) and normalized to the start of the hour. Minutes and seconds are truncated. - Example: 2025-07-20T19:10:10-05:00 becomes 2025-07-20T19:00:00-05:00 in ET |
| endDate | The date when campaign ends Note: It must be set either at campaign or ad group level | date | Conditional. Required only if it is not set at ad group level. Cannot be changed to ad group level later. | Date format: yyyy-MM-dd'T'HH:mm:ss.SSSXXX To run campaign indefinitely, use 9999-12-30T00:00:00Z Notes: - All timestamp values must be in ISO 8601 format - Values are internally converted to ET and normalized to the hour - endDate must be after 12:00 PM ET or an error is returned - If set to exactly 00:00:00 ET, it is interpreted as 23:59:59 of the previous day |
| 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 indefinitely must use a daily budget. | string | Conditional. 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 Notes: - Daily budget cannot exceed total budget amount - Up to 20% of unspent budget rolls over to the next day - Must be set either at campaign or ad group level - Campaigns scheduled indefinitely must use a daily budget | double | Conditional. Required only if: - Not set at ad group level - budgetType is daily | Minimum value: $0.01 Note: Required only if budgetType is dailyBudget |
| totalBudget | Total budget of campaign Note: Must be set either at campaign or ad group level | double | Conditional. Required only if: - Not set at ad group level - budgetType is total | Minimum value: $0.01 Note: Required only if budgetType is totalBudget |
| deliverySpeed | Determines pacing of ad delivery Note: Must be set either at campaign or ad group level | string | Conditional. 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 1 day ago
