ads_update_budget_rules_for_campaigns
Update existing budget rules — rename, change the increase, threshold or duration, or set ruleState PAUSED to stop one.
destructiveAmazon Adsads.sp
Budget rules have no delete; ads_disassociate_associated_budget_rule_for_campaigns detaches one from a campaign. Amazon Ads API · UpdateBudgetRulesForSPCampaigns · PUT /sp/budgetRules Amazon Ads API · UpdateBudgetRulesForSBCampaigns · PUT /sb/budgetRules Amazon Ads API · UpdateBudgetRulesForSDCampaigns · PUT /sd/budgetRules Docs: https://advertising.amazon.com/API/docs/en-us/sponsored-products/3-0/openapi/prod#tag/BudgetRules/operation/UpdateBudgetRulesForSPCampaigns Docs: https://advertising.amazon.com/API/docs/en-us/sponsored-brands/3-0/openapi/prod#tag/Budget-rules/operation/UpdateBudgetRulesForSBCampaigns Docs: https://advertising.amazon.com/API/docs/en-us/sponsored-display/3-0/openapi#tag/Budget-Rules/operation/UpdateBudgetRulesForSDCampaigns Gate: approve — interactive: show the change (Amazon's preview first where one exists), wait for an explicit approve; autopilot: only when the seller's own words asked for this change; otherwise ask.
Call it
In an AI client (MCP)
{
"name": "ads_update_budget_rules_for_campaigns",
"arguments": {
"store": "myStore-US",
"countryCode": "<countryCode>",
"adProduct": "<adProduct>",
"body": []
}
}From code (Tool API)
curl -X POST https://api.sellersheetai.com/api/v1/tools/ads_update_budget_rules_for_campaigns \
-H "Authorization: Bearer $SELLERSHEET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"store":"myStore-US","countryCode":"<countryCode>","adProduct":"<adProduct>","body":[]}'Arguments
| Name | Type | Description |
|---|---|---|
storerequired | string | the store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim. |
countryCoderequired | string | the Ads profile's 2-letter country code (e.g. 'US'). |
adProductrequired | string | SPONSORED_PRODUCTS | SPONSORED_BRANDS | SPONSORED_DISPLAY. |
bodyrequired | object[] | list of 1-25 {ruleId*, ruleDetails, ruleState} wrappers (NOT flat like create). |
Result
Every tool answers {notification, data, human_action}; data carries:
- 207, one result per item; an item whose code is not "Ok" (or that is listed under error / failures) failed — read its details.
Body (Amazon schema): {budgetRulesDetails: [BudgetRule]} (max 25), each item
createdDate: number
lastUpdatedDate: number
ruleDetails: {budgetIncreaseBy: {type*, value*}, duration: {dateRangeTypeRuleDuration, eventTypeRuleDuration}, name (max 355 chars), performanceMeasureCondition: {comparisonOperator*, metricName*, threshold*}, recurrence: {daysOfWeek, intraDaySchedule, type}, ruleType: PERFORMANCE | SCHEDULE}
ruleDetails.budgetIncreaseBy.type: PERCENT
ruleDetails.recurrence.daysOfWeek: [FRIDAY | MONDAY | SATURDAY | SUNDAY | THURSDAY | TUESDAY | WEDNESDAY]
ruleId*: string
ruleState: ACTIVE | PAUSED
ruleStatus: string
By product: SPONSORED_PRODUCTS SPONSORED_BRANDS SPONSORED_DISPLAY
comparisonOperator EQUAL_TO + shared shared shared
shared: GREATER_THAN GREATER_THAN_OR_EQUAL_TO LESS_THAN LESS_THAN_OR_EQUAL_TO
metricName ACOS CTR CVR ROAS IS NTB ROAS ACOS CTR CVR ROAS
recurrence.type DAILY DAILY WEEKLY DAILY WEEKLYGotchas
- ruleDetails accepts ONLY mutable fields: name, duration, budgetIncreaseBy, performanceMeasureCondition. Amazon's schema also lists ruleType and recurrence, but an update carrying either is rejected (400 'Expected null').