Skip to content

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

  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), 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

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/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 --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 --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

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 --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