Skip to content

SBA Profile V1

Overview

Search Brand Amplifier (SBA) is a unique search solution to improve brand recognition and showcase your product portfolio. It's a premium search placement that showcases your brand and a curated product portfolio to customers actively searching Sam's Club's site and app for products like yours.

Your logo, a custom headline, and up to four SKUs appear together above relevant search results, with clickable links. Use the Search Brand Amplifier profile API to create, retrieve, or update Search Brand Amplifier products profiles.

A Search Brand Amplifier profile comprises the following components

  1. Brand Logo
    • format: .png
    • size ≤ 200 Kb
    • should be 100*100 px
  2. Brand Name (maximum of 35 characters)
  3. Headline Text (maximum of 45 characters)
  4. Logo Click URL
    • must be a https://www.samsclub.com
    • should be a browse or search page for the brand
    • cannot contain any of the characters referenced in clickUrl requirements

Note: Only enabled SBA profile can be updated by using v1 version of URL. We recommend to use v2 version of the APIs (/api/v2/sba_profile).

To understand details about 'Request Header' or 'Authorization', please refer to the Authorization Guide

List All SBA Profiles (V1)

Description: Retrieve the SBA profile for a given Campaign and Ad Group.

Note: V1 returns the single active (enabled) SBA profile as a JSON object (not an array). Use V2 to retrieve all profiles for an ad group.

End Point: /api/v1/sba_profile

HTTP Method: GET

Query Parameters

Parameter Description Type Required Possible Values
campaignId The ID of the campaign. It returns a specific campaign in response Integer N A valid campaignId
adGroupId ID of the ad group Integer Y A valid adgroupId

Sample Request

1
2
3
4
5
6
7
8
curl --location 
'https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile?adGroupId={adGroupId}'
--header 'Authorization: Bearer *********************'
--header 'accept: application/json'
--header 'WM_SEC.AUTH_SIGNATURE: **************'
--header 'WM_SEC.KEY_VERSION: 2'
--header 'WM_CONSUMER.ID: ***********'
--header 'WM_CONSUMER.intimestamp: 1565309779'
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile?adGroupId={adGroupId}")
.method("GET", body)
.addHeader("Authorization", "Bearer *********************")
.addHeader("wm_consumer.id", "*************")
.addHeader("wm_sec.key_version", "2")
.addHeader("wm_sec.auth_signature", "*************")
.addHeader("wm_qos.correlation_id", "12345")
.addHeader("wm_consumer.intimestamp", "1700221256000").build();
Response response = client.newCall(request).execute();  
const axios = require('axios'); 
let config = { 
method: 'get', 
maxBodyLength: Infinity, 

url: 'https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile?adGroupId={adGroupId}', 

headers: {  
    'wm_consumer.id': '****************',  
    'wm_sec.key_version': '2',  
    'wm_sec.auth_signature': '**************',  
    'wm_qos.correlation_id': '12345',  
    'wm_consumer.intimestamp': '**************',  
    'Authorization': 'Bearer ****************' 
} 
}; 
axios.request(config) 
.then((response) => { 
console.log(JSON.stringify(response.data)); 
}) 
.catch((error) => { 
console.log(error); 
}); 
import requests 
url = "https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile?adGroupId={adGroupId}" 
payload = {} 
headers = { 
    'Authorization': 'Bearer ******************',
    'wm_consumer.id': '************', 
    'wm_sec.key_version': '2', 
    'wm_sec.auth_signature': '************', 
    'wm_qos.correlation_id': '12345', 
    'wm_consumer.intimestamp': '1706707584000'
} 
response = requests.request("GET", url, headers=headers, data=payload) 
print(response.text) 

Response

Element Description Type
searchAmpName Brand Name String
headlineText Headline to be displayed on Banner ad String
logoUrl Url for for the brand image that is displayed on the ad String
clickUrl Url that customer is directed to when they click on the ad String
reviewStatus Status of AdOps review of SBA profile. Expected values: pending , complete String
reviewReason Reason for rejection of SBA profile. If approved, this field is returned as null value String
sbaProfileId 5 digit ID for the SBA profile Integer
campaignId The ID of the campaign Integer
adGroupId ID of the ad group that is part of the campaign Integer

Sample Response

{
    "searchAmpName": "Hello",
    "headlineText": "SBAProfile",
    "logoUrl": "https://i5.walmartimages.com/dfw/9fa19e5c-d9/k2-_c18d5e56-990e-4e30-a6d1-150df1204eb7.v2.png",
    "clickUrl": "https://www.samsclub.com",
    "reviewStatus": "pending",
    "reviewReason": null,
    "sbaProfileId": 11674,
    "campaignId": 21913,
    "adGroupId": 770837591
}

HTTP Status Code

Status Code Description Possible Error Messages
400 Bad Request
  • CampaignId not found in request
  • adGroupId not found in request
403 Forbidden
  • User not Authenticated
  • AdOps role does not access to any campaigns
  • You don't have access to this advertiser
404 Not Found
  • AdGroup not found
  • Campaign not found
422 Operation Not Allowed Please use AdGroupMedia endpoints for AdGroupMedia
429 Too Many Requests <Exception Message>
500 Internal Server Error There was an error processing the request

Create SBA Profile (V1)

Description: Create an SBA profile for an Adgroup or multiple SBA profiles for AdGroups all at once.

Note: V1 accepts a JSON array but only stores the first profile per ad group. Use V2 to create multiple profiles per ad group.

End Point: /api/v1/sba_profile

HTTP Method: POST

Body Parameters

Parameter Description Type Required Possible Values
campaignId The ID of the campaign. It returns a specific campaign in response Integer Y A valid campaign ID
adgroupId ID of the ad group that is part of the campaign Integer Y Unique numeric identifier
searchAmpName The Brand name that will be displayed to the customer String Y Brand name
clickUrl The click url that the customer will be directed when they click on the advertisement String Y Clickable URL must be https://www.samsclub.com URL that displays product(s) for the advertised brand.
clickUrl requirements:
1. Any ":" in the URL should be replaced with "%3A"
2. Any "+" in the URL should be replaced with "%20″
3. Any ¦ in the URL should be replaced with "%7C%7C"
4. URL query String should not contain "typeahead=" parameter

Sample Request

curl --location  
'https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile'
--header 'Authorization: Bearer *********************'
--header 'accept: application/json'
--header 'WM_SEC.AUTH_SIGNATURE: **************'
--header 'WM_SEC.KEY_VERSION: 2' 
--header 'WM_CONSUMER.ID: *************'
--header 'WM_CONSUMER.intimestamp: 1565309779'
--header 'Content-Type: application/json'
--data '[ 
    {
        "campaignId": 1234,
        "adGroupId": 1234,
        "searchAmpName": "Brand1",
        "headlineText": "SBAProfile",
        "clickUrl": "https://www.samsclub.com"
    }
]'
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, 
[
    {
        "campaignId": 1234,
        "adGroupId": 1234,
        "searchAmpName": "Brand1",
        "headlineText": "SBAProfile",
        "clickUrl": "https://www.samsclub.com"
    }
]);
Request request = new Request.Builder()
.url("https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile")
.method("POST", body)
.addHeader("Authorization", "Bearer *********************")
.addHeader("wm_consumer.id", "*************")
.addHeader("wm_sec.key_version", "2")
.addHeader("wm_sec.auth_signature", "*************")
.addHeader("wm_qos.correlation_id", "12345")
.addHeader("wm_consumer.intimestamp", "1700221256000")
.addHeader("Content-Type", "application/json").build();
Response response = client.newCall(request).execute();
const axios = require('axios'); 
let data = JSON.stringify([ 
{ 
    "campaignId": 1234,
        "adGroupId": 1234,
        "searchAmpName": "Brand1",
        "headlineText": "SBAProfile",
        "clickUrl": "https://www.samsclub.com"
} 
]); 
let config = { 
method: 'post', 
maxBodyLength: Infinity, 

url: 'https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile', 

headers: {  
    'wm_consumer.id': '****************',  
    'wm_sec.key_version': '2',  
    'wm_sec.auth_signature': '**************',  
    'wm_qos.correlation_id': '12345',  
    'wm_consumer.intimestamp': '**************',  
    'Content-Type': 'application/json',  
    'Authorization': 'Bearer ****************' 
}, 
data : data 
}; 
axios.request(config) 
.then((response) => { 
console.log(JSON.stringify(response.data)); 
}) 
.catch((error) => { 
console.log(error); 
}); 
import requests 
url = "https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile"
payload = "[{
        "campaignId": 1234,
        "adGroupId": 1234,
        "searchAmpName": "Brand1",
        "headlineText": "SBAProfile",
        "clickUrl": "https://www.samsclub.com"
   }]" 
headers = { 
    'Authorization': 'Bearer ******************',
    'wm_consumer.id': '************', 
    'wm_sec.key_version': '2', 
    'wm_sec.auth_signature': '***********', 
    'wm_qos.correlation_id': '12345', 
    'wm_consumer.intimestamp': '1706706861000',
    'Content-Type': 'application/json'
} 
response = requests.request("POST", url, headers=headers, data=payload) 
print(response.text) 

Response

Element Description Type
code Possible values of response code: success or failure String
details Details of the error if response code is failure String
sbaProfileId ID of the SBA profile Integer

Sample Response

[
    {
        "code": "success",
        "details": "",
        "sbaProfileId": 11674
    }
]

HTTP Status Code

Status Code Description Possible Error Messages
200 OK
  • Exception in creating SBA Profile
  • There was an error processing the request
400 Bad Request
  • Maximum allowed size in batch is 50
  • empty input
403 Forbidden
  • User not Authenticated
  • AdOps role does not access to any campaigns
  • You don't have access to this advertiser
404 Not Found
  • AdGroup not found
  • Campaign not found
422 Operation Not Allowed
  • Cannot define SBA Profile for <campaignType> campaigns
  • Campaign is Under review, adding is not allowed
  • AdGroup already has media defined, please update existing instead of defining new one
  • AdGroup already has search amplifier defined, please update existing instead of defining new one
  • Please use V2 endpoints for multiple sba profiles
429 Too Many Requests <Exception Message>
500 Internal Server Error There was an error processing the request

Update SBA Profile (V1)

Description: You can update Search Brand Amplifier profile for a live Search Brand Amplifier campaign as well. To update the enabled Search Brand Amplifier profile in a live campaign, you will have to pause the campaign, update the profile, and submit it for review.

Note: V1 identifies the profile by campaignId + adGroupId. The sbaProfileId and status fields are not accepted in V1. Use V2 to update by sbaProfileId or to change profile status.

End Point: /api/v1/sba_profile

HTTP Method: PUT

Body Parameters

Parameter Description Type Required Possible Values
campaignId The ID of the campaign. It returns a specific campaign in response Integer Y A valid campaign ID
adgroupId ID of the ad group that is part of the campaign Integer Y Unique numeric identifier
searchAmpName The Brand name that will be displayed to the customer String Y Brand name
headlineText The headline of the advertisement that will be displayed to the customer String Y Headline String
clickUrl The click url that the customer will be directed when they click on the advertisement String Y http://samsclub.com**

Sample Request

curl --location --request PUT 
'https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile'
--header 'Authorization: Bearer *********************'
--header 'Content-Type: application/json'
--header 'accept: application/json'
--header 'WM_SEC.AUTH_SIGNATURE: **************'
--header 'WM_SEC.KEY_VERSION: 2' 
--header 'WM_CONSUMER.ID: *************'
--header 'WM_CONSUMER.intimestamp: 1565309779'
--data '[{
    "campaignId": 1234,
    "adGroupId": 1234,
    "searchAmpName": "Member's Mark",
    "headlineText": "Sample keywords approval",
    "clickUrl": "https://www.samsclub.com"
}]'
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType,
[
    {
        "campaignId": 1234,
        "adGroupId": 1234,
        "searchAmpName": "Member's Mark",
        "headlineText": "Sample keywords approval",
        "clickUrl": "https://www.samsclub.com"
    }
]);
Request request = new Request.Builder()
.url("https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile")
.method("PUT", body)
.addHeader("Authorization", "Bearer *********************")
.addHeader("wm_consumer.id", "*************")
.addHeader("wm_sec.key_version", "2")
.addHeader("wm_sec.auth_signature", "*************")
.addHeader("wm_qos.correlation_id", "12345")
.addHeader("wm_consumer.intimestamp", "1700221256000")
.addHeader("Content-Type", "application/json").build();
Response response = client.newCall(request).execute();
const axios = require('axios'); 
let data = JSON.stringify([ 
{ 
    "campaignId": 1234,
    "adGroupId": 1234,
    "searchAmpName": "Member's Mark",
    "headlineText": "Sample keywords approval",
    "clickUrl": "https://www.samsclub.com"
} 
]); 
let config = { 
method: 'put', 
maxBodyLength: Infinity, 

url: 'https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile', 

headers: {  
    'wm_consumer.id': '****************',  
    'wm_sec.key_version': '2',  
    'wm_sec.auth_signature': '',  
    'wm_qos.correlation_id': '12345',  
    'wm_consumer.intimestamp': '',  
    'Content-Type': 'application/json',  
    'Authorization': 'Bearer ****************' 
}, 
data : data 
}; 
axios.request(config) 
.then((response) => { 
console.log(JSON.stringify(response.data)); 
}) 
.catch((error) => { 
console.log(error); 
}); 
import requests
import json
url = "https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v1/sba_profile"
payload = "[ 
{ 
    "campaignId": 1234,
    "adGroupId": 1234,
    "searchAmpName": "Member's Mark",
    "headlineText": "sample keywords approval",
    "clickUrl": "https://www.samsclub.com"
}]" 
headers = { 
    'Authorization': 'Bearer ******************',
    'wm_consumer.id': '************', 
    'wm_sec.key_version': '2', 
    'wm_sec.auth_signature': '************', 
    'wm_qos.correlation_id': '12345', 
    'wm_consumer.intimestamp': '1706707710000',
    'Content-Type': 'application/json',
} 
response = requests.request("PUT", url, headers=headers, data=payload) 
print(response.text) 

Response

Element Description Type
code Possible values of response code: success, failure String
details Details of the error if response code is failure String
sbaProfileId ID of the Search Brand Amplifier profile Integer

Sample Responses

[
    {
        "code": "success",
        "details": "",
        "sbaProfileId": 11674
    }
]

HTTP Status Code

Status Code Description Possible Error Messages
400 Bad Request
  • Maximum allowed size in batch is 50
  • empty input
  • Sba Profile Id validation failed
  • Please use V2 endpoints for multiple sba profiles
  • You cannot both update and enable this in the same time when campaign is active, because it was previously approved
403 Forbidden
  • User not Authenticated
  • AdOps role does not access to any campaigns
  • You don't have access to this advertiser
404 Not Found
  • AdGroup not found
  • Campaign not found
  • SBA Profile details not found for AdGroup
  • AdGroup Media not found for AdGroup
  • This endpoint is not allowed for this campaign type.
422 Operation Not Allowed
  • Campaign is Under review, modifying is not allowed
  • Please use sbaProfile endpoints for sbaProfile
  • Please use AdGroupMedia endpoints for AdGroupMedia
  • Cannot define adGroup media for these campaigns
  • You cannot update the enabled one for campaigns which are scheduled or currently live
  • Disabled one cannot be enabled without approval for campaigns which are scheduled or currently live
429 Too Many Requests <Exception Message>
500 Internal Server Error There was an error processing the request