SBA Profile
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
Brand Logo
format: .png
size ≤ 200 Kb
should be 100*100 px
Brand Name (maximum of 35 characters)
Headline Text (maximum of 45 characters)
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), as v1 version will be deprecated in a future release.
To understand details about ‘Request Header' or 'Authorization’,
please refer to the Authorization Guide
List All SBA Profiles
Description: Retrieve the SBA profile for a given Campaign and Ad Group.
End Point: /api/v2/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
Curl Java Node JS Python
curl -- location
' https : //developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v2/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/v2/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/v2/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
status
Status of the SBA profile. Expected values : enabled, disabled
String
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,
"status": "enabled",
"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
Description: Create an SBA profile for an Adgroup or multiple SBA profiles for AdGroups all at once.
End Point: /api/v2/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 Java Node JS Python
curl -- location
' https : //developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v2/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/v2/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/v2/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/v2/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
},
{
"code": "failure",
"details": "",
"sbaProfileId": 11675
}
]
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 Cannot be more than 2 sba profiles in an adGroup
429
Too Many Requests
<Exception Message>
500
Internal Server Error
There was an error processing the request
Update SBA Profile
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.
End Point: /api/v2/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
sbaProfileId
The ID of the SBA profile to be edited
Integer
Y
A valid SBA profile ID
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* *
status
The status of the SBA profile
String
Y
enabled, disabled
Sample Request
Curl Java Node JS Python
curl -- location -- request PUT
' https : //developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v2/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 ,
"sbaProfileId" : ,
"searchAmpName" : "Member's Mark" ,
"headlineText" : "Sample keywords approval" ,
"clickUrl" : "https://www.samsclub.com/typeahead=" ,
"status" : "enabled"
}] '
OkHttpClient client = new OkHttpClient (). newBuilder (). build ();
MediaType mediaType = MediaType . parse ( "application/json" );
RequestBody body = RequestBody . create ( mediaType ,
[
{
"campaignId" : 1234
"adGroupId" : 1234 ,
"sbaProfileId" : ,
"searchAmpName" : "Member's Mark" ,
"headlineText" : "Sample keywords approval" ,
"clickUrl" : "https://www.samsclub.com/typeahead=" ,
"status" : "enabled"
}
] );
Request request = new Request . Builder ()
. url ( "https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v2/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 ,
"sbaProfileId" : ,
"searchAmpName" : "Member's Mark" ,
"headlineText" : "Sample keywords approval" ,
"clickUrl" : "https://www.samsclub.com/typeahead=" ,
"status" : "enabled"
}
]);
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/v2/sba_profile"
payload = "[
{
"campaignId" : 1234 ,
"adGroupId" : 1234 ,
"sbaProfileId" : ,
"searchAmpName" : "Member's Mark" ,
"headlineText" : "sample keywords approval" ,
"clickUrl" : "https://www.samsclub.com/typeahead1=" ,
"status" : "enabled"
}] "
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
},
{
"code": "success",
"details": "",
"sbaProfileId": 11675
}
]
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
Upload SBA Profile Logo
Description: Upload a logo image to an SBA profile by SBA profile ID.
End Point: /api/v2/sba_profile_image_upload
HTTP Method: POST
Form Parameters
Parameter
Description
Type
Required
Possible Values
file
Image to be uploaded(File must be less than 1MB)
File
Y
Valid directory on computer of image to be uploaded
sbaBaseProfileRequest
The campaign ID, adgroupId and sbaProfile ID of the SBA profile that the image will be uploaded to
String
Y
{"campaignId": "54321", "adGroupId": "777777777", "sbaProfileId": "12345"}
Sample Request
Curl Java Node JS Python
curl -- location
' https : //developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v2/sba_profile_image_upload'
-- 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 '
-- form ' file = @ "/Directory/of/file" '
-- form ' SBABaseProfileRequest = ' {
"campaignId" : 1234 ,
"adGroupId" : 1234 ,
"sbaProfileId" : 1234
} ''
OkHttpClient client = new OkHttpClient (). newBuilder (). build ();
MediaType mediaType = MediaType . parse ( "text/plain" );
RequestBody body = new MultipartBody . Builder (). setType ( MultipartBody . FORM )
. addFormDataPart ( "file" , "/Users/vn53q3k/Desktop/walmart.png" )
. addFormDataPart ( "SBABaseProfileRequest" ,
"{
" campaignId ": 1234,
" adGroupId ": 1234,
" sbaProfileId ": 1234
}" ). build ();
Request request = new Request . Builder ()
. url ( "https://developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v2/sba_profile_image_upload" )
. 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' );
const FormData = require ( 'form-data' );
const fs = require ( 'fs' );
let data = new FormData ();
data . append ( 'SBABaseProfileRequest' ,
'{
"campaignId": 1234,
"adGroupId": 1234 ,
"sbaProfileId": 1234
}'
);
data . append ( 'file' , fs . createReadStream ( '///dwshome-c.homeoffice.wal-mart.com/dwsuserdata$/vn56eoq/Downloads/sam' s image . png '));
let config = {
method: ' post ',
maxBodyLength: Infinity,
url: ' https : //developer.api.us.stg.walmart.com/api-proxy/service/sp/api-sams/v1/api/v2/sba_profile_image_upload',
headers : {
'wm_consumer.id' : '****************' ,
'wm_sec.key_version' : '2' ,
'wm_sec.auth_signature' : '*************' ,
'wm_qos.correlation_id' : '12345' ,
'wm_consumer.intimestamp' : '*************' ,
'Authorization' : 'Bearer ****************' ,
... data . getHeaders ()
},
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/v2/sba_profile_image_upload"
payload =
{
'SBABaseProfileRequest' :
'{
"campaignId" : 1234 ,
"adGroupId" : 1234 ,
"sbaProfileId" : 1234
} '
}
files = [
( 'file' ,( 'sam' s image . png ',open(' /// dwshome - c . homeoffice . wal - mart . com / dwsuserdata $ / vn56eoq / Downloads / sam \'s image.png' , 'rb' ), 'image/png' ))
]
headers = {
'Authorization' : 'Bearer ******************' ,
'wm_consumer.id' : '************' ,
'wm_sec.key_version' : '2' ,
'wm_sec.auth_signature' : '************' ,
'wm_qos.correlation_id' : '12345' ,
'wm_consumer.intimestamp' : '1706708199000' ,
'Content-Type' : 'application/json'
}
response = requests . request ( "POST" , url , headers = headers , data = payload , files = files )
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 Response
[
{
"code": "success",
"details": "",
"sbaProfileId": 11674
}
]
HTTP Status Code
Status Code
Description
Possible Error Messages
200
OK
Invalid Upload Request Missing FILE Missing form param <SBABaseProfileRequest> Unable to upload the image
400
Bad Request
Campaign Id validation failed AdGroup Id validation failed Sba Profile Id validation failed File name cannot be empty File size exceeds maximum limit of 1024 Kb Invalid ContentType. Media Type image/png allowed only ContentType and mimeType does not match 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
422
Operation Not Allowed
Campaign is Under review, modifying is not allowed Please use sbaProfile endpoints for sbaProfile Please use AdGroupMediaendpoints for AdGroupMedia Cannot define adGroup media for this 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
WSResponse is not 200 or 409, it was: <statusCode> Error in uploading the file There was an error processing the request