POST/ad_campaign/{campaign_id}/bulk_update_keyword
Note: This method is only available for select partners who have been approved for the eBay priority strategy program. For information about how to request access to this program, refer to Priority Strategy Access Requests in the Promoted Listings Playbook. To determine if a seller qualifies for priority strategy, use the getAdvertisingEligibility method in Account API.
This method updates the bids and statuses of keywords, in bulk, for an existing priority strategy campaign.
In the request, supply the campaign_id as a path parameter.
Call the getCampaigns method to retrieve a list of current campaign IDs for a specified seller.
Input
Resource URI
This method is supported in Sandbox environment. To access the endpoint, just replace the api.ebay.com
root URI with api.sandbox.ebay.com
URI parameters
Parameter | Type | Description |
---|---|---|
campaign_id | string | This path parameter specifies the unique eBay-assigned identifier of the ad campaign for which a set of keywords is being updated. Use the getCampaigns method to retrieve campaign IDs. Occurrence: Required |
HTTP request headers
All requests made to eBay REST operations require you to provide the Authorization
HTTP header for authentication authorization.
The table below shows additional HTTP request headers that are either required, conditionally required, or strongly recommended for this method. Other standard HTTP request headers- opens rest request components page (not in this table) can also be used, but they are optional.
Header | Type | Description |
---|---|---|
Content-Type | string | This header indicates the format of the request body provided by the client. Its value should be set to application/json. For more information, refer to HTTP request headers. Occurrence: Required |
OAuth scope
This request requires an access token created with the authorization code grant flow, using one or more scopes from the following list (please check your Application Keys page for a list of OAuth scopes available to your application):
https://api.ebay.com/oauth/api_scope/sell.marketing
See OAuth access tokens for more information.
Request payload
Copy complete valid JSON to clipboardRequest fields
Input container/field | Type | Description |
---|---|---|
requests | array of UpdateKeywordByKeywordIdRequest | Use this array to update the bid values and/or statuses of one or more existing keywords. Occurrence: Required |
requests.bid | Amount | This container is used to set or change the bid percentage for the keyword. Each time a listing is retrieved in search results using this keyword and clicked on, the seller will be charged this amount. Each click goes toward the daily budget set up for the Cost Per Click (CPC) campaign. Occurrence: Conditional |
requests.bid.currency | CurrencyCodeEnum | The base currency applied to the value field to establish a monetary amount. Occurrence: Conditional |
requests.bid.value | string | The monetary amount in the specified currency. Occurrence: Conditional |
requests.keywordId | string | This field is used to identify the keyword to be updated. The getKeyword method can be used to retrieve keywordId values. Occurrence: Required |
requests.keywordStatus | KeywordStatusEnum | Include this field if you wish to change the status of the keyword. The status value specified here must be different than the keyword's current status. To confirm the current status of a keyword, you can use the getKeyword method. If the status of the ad is currently Occurrence: Optional |
Output
HTTP response headers
This call has no response headers.
Response payload
Response fields
Output container/field | Type | Description |
---|---|---|
responses | array of UpdateKeywordResponse | A list of keywords that have been processed from the bulk request. Occurrence: Conditional |
responses.errors | array of ErrorDetailV3 | This container will be returned if there are one or more issues associated with modifying the corresponding keyword. Occurrence: Conditional |
responses.errors.category | string | The category type for this error or warning. It takes an ErrorCategory object which can have one of three values:
Occurrence: Conditional |
responses.errors.domain | string | Name of the domain containing the service or application. Occurrence: Conditional |
responses.errors.errorId | integer | A positive integer that uniquely identifies the specific error condition that occurred. Your application can use error codes as identifiers in your customized error-handling algorithms. Occurrence: Conditional |
responses.errors.inputRefIds | array of string | Identifies specific request elements associated with the error, if any. inputRefId's response is format specific. For JSON, use JSONPath notation. Occurrence: Conditional |
responses.errors.longMessage | string | An expanded version of message that should be around 100-200 characters long, but is not required to be such. Occurrence: Conditional |
responses.errors.message | string | An end user and app developer friendly device agnostic message. It explains what the error or warning is, and how to fix it (in a general sense). Its value is at most 50 characters long. If applicable, the value is localized in the end user's requested locale. Occurrence: Conditional |
responses.errors.outputRefIds | array of string | Identifies specific response elements associated with the error, if any. Path format is the same as Occurrence: Conditional |
responses.errors.parameters | array of ErrorParameterV3 | This optional complex field type contains a list of one or more context-specific Occurrence: Conditional |
responses.errors.parameters.name | string | Name of the entity that threw the error. Occurrence: Conditional |
responses.errors.parameters.value | string | A description of the error. Occurrence: Conditional |
responses.errors.subdomain | string | Name of the domain's subsystem or subdivision. For example, checkout is a subdomain in the buying domain. Occurrence: Conditional |
responses.keywordId | string | This field identifies the keyword that the seller updated, or attempted to update. Occurrence: Always |
responses.statusCode | integer | An HTTP status code is returned for each keyword to indicate the success or failure of updating that keyword. Occurrence: Always |
responses.warnings | array of ErrorDetailV3 | List of warnings associated with this operation Occurrence: Conditional |
responses.warnings.category | string | The category type for this error or warning. It takes an ErrorCategory object which can have one of three values:
Occurrence: Conditional |
responses.warnings.domain | string | Name of the domain containing the service or application. Occurrence: Conditional |
responses.warnings.errorId | integer | A positive integer that uniquely identifies the specific error condition that occurred. Your application can use error codes as identifiers in your customized error-handling algorithms. Occurrence: Conditional |
responses.warnings.inputRefIds | array of string | Identifies specific request elements associated with the error, if any. inputRefId's response is format specific. For JSON, use JSONPath notation. Occurrence: Conditional |
responses.warnings.longMessage | string | An expanded version of message that should be around 100-200 characters long, but is not required to be such. Occurrence: Conditional |
responses.warnings.message | string | An end user and app developer friendly device agnostic message. It explains what the error or warning is, and how to fix it (in a general sense). Its value is at most 50 characters long. If applicable, the value is localized in the end user's requested locale. Occurrence: Conditional |
responses.warnings.outputRefIds | array of string | Identifies specific response elements associated with the error, if any. Path format is the same as Occurrence: Conditional |
responses.warnings.parameters | array of ErrorParameterV3 | This optional complex field type contains a list of one or more context-specific Occurrence: Conditional |
responses.warnings.parameters.name | string | Name of the entity that threw the error. Occurrence: Conditional |
responses.warnings.parameters.value | string | A description of the error. Occurrence: Conditional |
responses.warnings.subdomain | string | Name of the domain's subsystem or subdivision. For example, checkout is a subdomain in the buying domain. Occurrence: Conditional |
HTTP status codes
This call can return one of the following HTTP status codes. For an overview of the status codes, see HTTP status codes in Using eBay RESTful APIs.
Status | Meaning |
---|---|
200 | Success |
207 | Multi Status |
400 | Bad Request |
404 | Not Found |
409 | Business error |
500 | Internal Server error |
Error codes
For more on errors, plus the codes of other common errors, see Handling errors.
Code | Domain | Category | Meaning |
---|---|---|---|
35001 | API_MARKETING | APPLICATION | There was a problem with an eBay internal system or process. Contact eBay Developer Technical Support for assistance. |
35002 | API_MARKETING | APPLICATION | Internal error. Please wait a few minutes and try the call again. |
35035 | API_MARKETING | REQUEST | The campaign with campaign id {campaign_id} has ended. |
35045 | API_MARKETING | REQUEST | No campaign found for campaign id {campaign_id}. |
35089 | API_MARKETING | BUSINESS | We are currently testing a premium ads product with a small invite-only group. We will share more information when we are ready to expand. |
35129 | API_MARKETING | BUSINESS | This method is not supported for campaigns with smart targeting type. |
36305 | API_MARKETING | REQUEST | The 'bid' value {bidValue} is not valid. The default bid value should be a double precision value. |
36306 | API_MARKETING | REQUEST | The 'bid' value {bidValue} is below floor value {bidFloorValue}. |
36307 | API_MARKETING | REQUEST | The 'bid' value {bidValue} is above max value {bidMaxValue}. |
36308 | API_MARKETING | REQUEST | The 'bid' currency {bidCurrency} is not valid or missing. |
36309 | API_MARKETING | REQUEST | The 'bid' currency {bidCurrency} should be the same as the daily budget. |
36310 | API_MARKETING | REQUEST | No keyword found for keyword id {keyword_id}. |
36313 | API_MARKETING | REQUEST | The 'bid' value {bidValue} is more than maximum daily budget {maxDailyBudget}. |
36316 | API_MARKETING | BUSINESS | You have exceeded the maximum number of Keyword requests in a bulk. Only {maxSupportedNumberInBulk} Ids are supported per call. |
36317 | API_MARKETING | REQUEST | The 'bid' or 'keywordStatus' is missing, either one is required for update. |
Warnings
For more on warnings, plus the codes of other common warnings, see Handling errors.
Code | Domain | Category | Meaning |
---|---|---|---|
35133 | API_MARKETING | BUSINESS | The bid provided in the call was ignored because the selected biddingStrategy is DYNAMIC for the campaign. |
Samples
New to making API calls? Please see Making a Call.
Note: Identifiers, such as order IDs or user IDs, and personal data in these samples might be anonymized or may no longer be active on eBay. If necessary, substitute current, relevant eBay data in your requests.
Sample 1: Update keywords in bulk
This sample updates keywords, in bulk, for a priority strategy ad campaign.
Input
The inputs for this sample are the campaign_id of the ad campaign for which the keywords shall be updated, as well as the updated keyword details (such as the bid data) in the request body.
POSThttps://api.ebay.com/sell/marketing/v1/ad_campaign/1********4/bulk_update_keyword
Output
If the call is successful, the details for the updated keywords are returned.
Sample 2: Update keywords in bulk for a dynamic keyword bidding campaign
This sample updates keywords, in bulk, for a campaign that is using the dynamic bidding strategy.
Input
This sample updates keywords, in bulk, for a campaign that is using the dynamic bidding strategy.
Since dynamic bidding does not support seller-specified bid values, the bid.value
and bid.currency
parameters should be omitted from the request payload.
POSThttps://api.ebay.com/sell/marketing/v1/ad_campaign/1********4/bulk_update_keyword
Output
A successful call returns the HTTP status code 200 Success and includes the details of the updated keywords.
If values for the bid.value
and bid.currency
parameters have been included in the request payload, the following Warning message is returned:
The bid provided in the call was ignored because the selected biddingStrategy is DYNAMIC for the campaign.