completed, working < 120s, or submitted for manual review)
PATCH Semantics: Only specified fields are updated; omitted fields remain unchanged.
Request Schema: /schemas/v2/media-buy/update-media-buy-request.json
Response Schema: /schemas/v2/media-buy/update-media-buy-response.json
Quick Start
Create a media buy, then pause it:Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
media_buy_id | string | Yes* | Publisher’s media buy identifier to update |
buyer_ref | string | Yes* | Your reference for the media buy to update |
start_time | string | No | Updated campaign start time |
end_time | string | No | Updated campaign end time |
paused | boolean | No | Pause/resume entire media buy (true = paused, false = active) |
packages | PackageUpdate[] | No | Package-level updates (see below) |
creatives | CreativeAsset[] | No | Upload and assign new creative assets inline |
creative_assignments | CreativeAssignment[] | No | Update creative rotation weights and placement targeting |
media_buy_id OR buyer_ref is required (not both)
Package Update Object
| Parameter | Type | Description |
|---|---|---|
package_id | string | Publisher’s package identifier to update |
buyer_ref | string | Your reference for the package to update |
paused | boolean | Pause/resume specific package (true = paused, false = active) |
budget | number | Updated budget allocation |
pacing | string | Updated pacing strategy |
bid_price | number | Updated bid price (auction products only) |
targeting_overlay | TargetingOverlay | Updated targeting restrictions |
creative_ids | string[] | Replace assigned creatives |
package_id OR buyer_ref is required for each package update
Response
Success Response
| Field | Description |
|---|---|
media_buy_id | Media buy identifier |
buyer_ref | Your reference identifier |
implementation_date | ISO 8601 timestamp when changes take effect (null if pending approval) |
affected_packages | Array of full Package objects showing complete state after update |
Error Response
| Field | Description |
|---|---|
errors | Array of error objects explaining failure |
errors before accessing success fields.
Common Scenarios
Update Package Budget
Increase budget for a specific package:Change Campaign Dates
Extend campaign end date:Update Targeting
Add or modify geographic restrictions:Replace Creatives
Swap out creative assets for a package:Multiple Package Updates
Update multiple packages in one call:What Can Be Updated
Campaign-Level Updates
✅ Can update:- Start/end times (subject to seller approval)
- Campaign status (active/paused)
- Media buy ID
- Buyer reference
- Brand manifest
- Original package product IDs
Package-Level Updates
✅ Can update:- Budget allocation
- Pacing strategy
- Bid prices (auction products)
- Targeting overlays
- Creative assignments
- Package status (active/paused)
- Package ID
- Product ID
- Pricing option ID
- Format IDs (creatives must match existing formats)
Error Handling
Common errors and resolutions:| Error Code | Description | Resolution |
|---|---|---|
MEDIA_BUY_NOT_FOUND | Media buy doesn’t exist | Verify media_buy_id or buyer_ref |
PACKAGE_NOT_FOUND | Package doesn’t exist | Verify package_id or buyer_ref |
UPDATE_NOT_ALLOWED | Field cannot be changed | See “What Can Be Updated” above |
BUDGET_INSUFFICIENT | New budget below minimum | Increase budget amount |
POLICY_VIOLATION | Update violates content policy | Review policy requirements |
INVALID_STATE | Operation not allowed in current state | Check campaign status |
Update Approval
Some updates require seller approval and return pending status:- Significant budget increases (threshold varies by seller)
- Date range changes affecting inventory availability
- Targeting changes that alter campaign scope
- Creative changes requiring policy review
implementation_date will be null:
PATCH Semantics
Only specified fields are updated - omitted fields remain unchanged:creative_ids), provide the complete new array:
Asynchronous Operations
Updates may be asynchronous, especially with seller approval.Response Patterns
Synchronous (completed immediately):Protocol-Specific Handling
AdCP tasks work across multiple protocols (MCP, A2A, REST). Each protocol handles async operations differently:- Status checking: Polling, webhooks, or streaming
- Updates: Protocol-specific mechanisms
- Long-running tasks: Different timeout and notification patterns
Best Practices
1. Use Precise Updates Update only what needs to change - don’t resend unchanged values. 2. Budget Increases Small incremental increases are more likely to be auto-approved than large jumps. 3. Pause Before Major Changes Pause campaigns before making significant targeting or creative changes to avoid delivery issues. 4. Test with Small Changes Test update workflows with minor changes before critical campaign modifications. 5. Monitor Status Always check response status andimplementation_date for approval requirements.
6. Validate Package State
Check affected_packages in response to confirm changes were applied correctly.
Usage Notes
- Updates are atomic - either all changes apply or none do
- Both media buys and packages can be referenced by
buyer_refor publisher IDs - Pending states (
working,submitted) are normal, not errors - Orchestrators MUST handle pending states as part of normal workflow
implementation_dateindicates when changes take effect (null if pending approval)
Next Steps
After updating a media buy:- Verify Changes: Use
get_media_buy_deliveryto confirm updates - Upload New Creatives: Use
sync_creativesif creative_ids changed - Monitor Performance: Track impact of changes on campaign metrics
- Optimize Further: Use
provide_performance_feedbackfor ongoing optimization
Learn More
- Media Buy Lifecycle - Complete campaign workflow
- Targeting - Targeting overlays and restrictions
- Task Management - Async patterns and status checking
- create_media_buy - Initial campaign creation