completed, or submitted for review that takes hours/days)
Request Schema: creative/sync-creatives-request.json
Response Schema: creative/sync-creatives-response.json
Quick start
Upload creative assets:status: "submitted" with a task_id. See Async approval workflow for handling these cases.
Request parameters
Creative object
Asset structure
Assets are keyed by role name. Each role contains the asset details:test=false
Assignments structure
Assignments are at the request level, mapping creative IDs to package IDs. Standalone creative agents that do not manage media buys ignore this field.test=false
Response
Success Response:creatives- Results for each creative processed (includes both successful and failed items)dry_run- Boolean indicating if this was a dry run (optional)
errors- Array of operation-level errors (auth failure, service unavailable)
errors array of individual creative objects when action: "failed".
Each creative in success response includes:
- All request fields
platform_id- Platform’s internal ID (whenactionis notfailed)action- What happened:created,updated,unchanged,failed,deletederrors- Array of error messages (only whenaction: "failed")warnings- Array of non-fatal warnings (optional)
Common scenarios
Bulk upload
Upload multiple creatives in one call:Generative creatives
Use the creative agent to generate creatives from brand identity data. See the Generative Creatives guide for complete workflow details.Dry run validation
Validate creative configuration without uploading:Scoped update with creative_ids filter
Update only specific creatives from a large library without affecting others:- Scoped updates: Only specified creatives modified, even with 100+ in library
- Error recovery: Retry only failed creatives after bulk sync validation failures
- Performance: Publisher can optimize processing when scope is known upfront
- Safety: Explicit targeting reduces risk of unintended changes
Async approval workflow
When creatives require review (brand safety, policy compliance), the initial response isstatus: "submitted". Use webhooks or polling to get the outcome.
Final response has status: "completed" with per-creative results:
- Approved creatives:
action: "created"withplatform_id - Rejected creatives:
action: "failed"with error details inerrorsarray
completed) means the review process finished. Individual creative outcomes are in the action field.
Operation-level failures (auth error, service unavailable) return status: "failed" with no creatives array.
See: Webhooks for webhook configuration.
Sync modes
Upsert (default)
- Creates new creatives or updates existing by
creative_id - Merges package assignments (additive)
- Updates provided fields, leaves others unchanged
- Use
creative_idsfilter to limit scope to specific creatives
Dry run
- Validates request without making changes
- Returns errors and warnings
- Does not process assets or create creatives
- Use for pre-flight validation checks
Error handling
Best practices
-
Use upsert semantics - Same
creative_idupdates existing creative rather than creating duplicates. This allows iterative creative development. Note: updates are blocked for creatives in active delivery (see #7). -
Validate first - Use
dry_run: trueto catch errors before actual upload. This saves bandwidth and processing time. - Batch assignments - Include all package assignments in single sync call to avoid race conditions between updates.
- CDN-hosted assets - Use publicly accessible CDN URLs for faster processing. Platforms can fetch assets directly without proxy delays.
- Brand identity - For generative creatives, validate brand identity schema before syncing to avoid processing failures.
-
Check format support - Use
list_creative_formatsto verify product supports your creative formats before uploading. -
Active delivery protection - Creatives assigned to active, non-paused packages cannot be updated or deleted via
delete_missing. Pause the package first, unassign the creative viaupdate_media_buy, or create a new creative with a differentcreative_id.
Related tasks
list_creative_formats- Check supported formats before uploadlist_creatives- Browse and filter creatives in a librarybuild_creative- Build manifests from library creatives or generate from scratchpreview_creative- Generate previews of creative manifests- Creative Asset Types - Technical requirements for assets