curl --request PUT \
--url https://api.interchange.io/api/v2/buyer/campaigns/{campaignId}/creatives/{creativeId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.interchange.io/api/v2/buyer/campaigns/{campaignId}/creatives/{creativeId}"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.interchange.io/api/v2/buyer/campaigns/{campaignId}/creatives/{creativeId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"creative_id": "<string>",
"name": "<string>",
"assets": [
{
"asset_id": "<string>",
"name": "<string>",
"original_filename": "<string>",
"asset_type": "IMAGE",
"content_type": "<string>",
"file_size": 4503599627370495,
"public_url": "<string>",
"asset_source": "CREATIVE_SOURCE",
"created_at": "2023-11-07T05:31:56Z",
"file_size_status": "verified",
"slot_asset_id": "<string>",
"asset_control": {
"locked_asset": true,
"asset_role": "product",
"can_transform": true,
"preservation_notes": "<string>",
"source_asset_id": "<string>",
"rendition_asset_id": "<string>"
},
"width": 4503599627370495,
"height": 4503599627370495,
"declared_sizes": [
{
"width": 4503599627370495,
"height": 4503599627370495
}
],
"duration_ms": 4503599627370495,
"codec": "<string>",
"bitrate_kbps": 4503599627370495,
"frame_rate": 1,
"sample_rate": 4503599627370495,
"container": "<string>",
"vast_version": "2.0",
"warnings": [
{
"code": "FILENAME_DIMENSION_MISMATCH",
"message": "<string>"
}
]
}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"revision": 4503599627370495,
"assembly_state": "draft",
"preview_revision": "<string>",
"message": "<string>",
"brand_domain": "<string>",
"template_id": "<string>",
"format_id": {
"id": "<string>",
"agent_url": "<string>",
"width": 123,
"height": 123,
"duration_ms": 123
},
"format_kind": "<string>",
"params": {},
"format_option_ref": {
"scope": "publisher",
"publisher_domain": "<string>",
"format_option_id": "<string>"
},
"requires_upgrade": true,
"industry_identifiers": [
{
"type": "ad_id",
"value": "<string>"
}
],
"target_format_ids": [
{
"id": "<string>",
"agent_url": "<string>",
"width": 123,
"height": 123,
"duration_ms": 123
}
],
"reuse_count": 4503599627370495,
"creative_role": "evergreen",
"creative_source": "uploaded",
"preview_url": "<string>",
"carousel_cards": [
{
"card_index": 4503599627370495,
"media_asset_id": "<string>",
"headline": "<string>",
"description": "<string>",
"cta": "<string>",
"landing_page_url": "<string>",
"platform_extensions": [
{}
]
}
],
"html_processing": {
"rewritten_refs": [
{
"original": "<string>",
"cdn_url": "<string>"
}
],
"unresolved_refs": [
"<string>"
],
"inserted_macros": [
"<string>"
],
"processed_html": "<string>",
"processed_html_url": "<string>"
},
"auto_detected_template": {
"template_id": "<string>",
"template_name": "<string>",
"method": "tag_hints"
},
"creative_manifest": "<unknown>",
"sync_status": {
"synced": true,
"agent_count": 0,
"last_synced_at": "2023-11-07T05:31:56Z"
},
"platform_links": [
{
"agent_id": "<string>",
"agent_name": "<string>",
"status": "<string>",
"platform_id": "<string>",
"approval_status": "<string>",
"rejection_reason": "<string>",
"synced_at": "2023-11-07T05:31:56Z"
}
],
"tracking": {
"supported_macros": [
"<string>"
],
"impression_tracker_url": "<string>",
"click_tracker_url": "<string>"
},
"macro_additions": [
{
"param_key": "<string>",
"value": "<string>"
}
],
"campaign_id": "<string>",
"advertiser_id": "<string>",
"frequencyCaps": [
{
"max_impressions": 3,
"window": {
"interval": 4503599627370496,
"unit": "seconds"
},
"id": "12345",
"targetLevel": "ADVERTISER",
"targetId": "camp_abc123",
"createdAt": "<string>",
"updatedAt": "<string>",
"archivedAt": "<string>"
}
],
"already_exists": true,
"ignored_files": 4503599627370495,
"warnings": [
"<string>"
]
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Update creative manifest
Update creative manifest fields such as name, brief message, tag, quality, status, or manage assets (add, delete, reclassify). Multipart form-data request.
curl --request PUT \
--url https://api.interchange.io/api/v2/buyer/campaigns/{campaignId}/creatives/{creativeId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.interchange.io/api/v2/buyer/campaigns/{campaignId}/creatives/{creativeId}"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.interchange.io/api/v2/buyer/campaigns/{campaignId}/creatives/{creativeId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"creative_id": "<string>",
"name": "<string>",
"assets": [
{
"asset_id": "<string>",
"name": "<string>",
"original_filename": "<string>",
"asset_type": "IMAGE",
"content_type": "<string>",
"file_size": 4503599627370495,
"public_url": "<string>",
"asset_source": "CREATIVE_SOURCE",
"created_at": "2023-11-07T05:31:56Z",
"file_size_status": "verified",
"slot_asset_id": "<string>",
"asset_control": {
"locked_asset": true,
"asset_role": "product",
"can_transform": true,
"preservation_notes": "<string>",
"source_asset_id": "<string>",
"rendition_asset_id": "<string>"
},
"width": 4503599627370495,
"height": 4503599627370495,
"declared_sizes": [
{
"width": 4503599627370495,
"height": 4503599627370495
}
],
"duration_ms": 4503599627370495,
"codec": "<string>",
"bitrate_kbps": 4503599627370495,
"frame_rate": 1,
"sample_rate": 4503599627370495,
"container": "<string>",
"vast_version": "2.0",
"warnings": [
{
"code": "FILENAME_DIMENSION_MISMATCH",
"message": "<string>"
}
]
}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"revision": 4503599627370495,
"assembly_state": "draft",
"preview_revision": "<string>",
"message": "<string>",
"brand_domain": "<string>",
"template_id": "<string>",
"format_id": {
"id": "<string>",
"agent_url": "<string>",
"width": 123,
"height": 123,
"duration_ms": 123
},
"format_kind": "<string>",
"params": {},
"format_option_ref": {
"scope": "publisher",
"publisher_domain": "<string>",
"format_option_id": "<string>"
},
"requires_upgrade": true,
"industry_identifiers": [
{
"type": "ad_id",
"value": "<string>"
}
],
"target_format_ids": [
{
"id": "<string>",
"agent_url": "<string>",
"width": 123,
"height": 123,
"duration_ms": 123
}
],
"reuse_count": 4503599627370495,
"creative_role": "evergreen",
"creative_source": "uploaded",
"preview_url": "<string>",
"carousel_cards": [
{
"card_index": 4503599627370495,
"media_asset_id": "<string>",
"headline": "<string>",
"description": "<string>",
"cta": "<string>",
"landing_page_url": "<string>",
"platform_extensions": [
{}
]
}
],
"html_processing": {
"rewritten_refs": [
{
"original": "<string>",
"cdn_url": "<string>"
}
],
"unresolved_refs": [
"<string>"
],
"inserted_macros": [
"<string>"
],
"processed_html": "<string>",
"processed_html_url": "<string>"
},
"auto_detected_template": {
"template_id": "<string>",
"template_name": "<string>",
"method": "tag_hints"
},
"creative_manifest": "<unknown>",
"sync_status": {
"synced": true,
"agent_count": 0,
"last_synced_at": "2023-11-07T05:31:56Z"
},
"platform_links": [
{
"agent_id": "<string>",
"agent_name": "<string>",
"status": "<string>",
"platform_id": "<string>",
"approval_status": "<string>",
"rejection_reason": "<string>",
"synced_at": "2023-11-07T05:31:56Z"
}
],
"tracking": {
"supported_macros": [
"<string>"
],
"impression_tracker_url": "<string>",
"click_tracker_url": "<string>"
},
"macro_additions": [
{
"param_key": "<string>",
"value": "<string>"
}
],
"campaign_id": "<string>",
"advertiser_id": "<string>",
"frequencyCaps": [
{
"max_impressions": 3,
"window": {
"interval": 4503599627370496,
"unit": "seconds"
},
"id": "12345",
"targetLevel": "ADVERTISER",
"targetId": "camp_abc123",
"createdAt": "<string>",
"updatedAt": "<string>",
"archivedAt": "<string>"
}
],
"already_exists": true,
"ignored_files": 4503599627370495,
"warnings": [
"<string>"
]
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Authorizations
API key or access token
Path Parameters
Campaign ID
1Creative manifest ID
1Body
JSON metadata for updating a creative manifest
Updated manifest name
1 - 255Updated creative brief
5000Updated legacy-v1 ADCP named-format ref
Show child attributes
Show child attributes
Updated AdCP 3.1 canonical format kind. Alternative to format_id for canonical formats.
image Updated format_option_ref. Accepts scope:"publisher" (requires publisher_domain) or scope:"product". Legacy flat shape without scope is also accepted.
- Option 1
- Option 2
Show child attributes
Show child attributes
Updated industry identifiers. Replaces existing list.
Show child attributes
Show child attributes
Additional format IDs this creative covers beyond its primary format_id. Replaces the existing list.
Show child attributes
Show child attributes
Updated creative template ID
Canonical click-through URL. Server assigns this to the AdCP click_url slot and refreshes click tracking metadata.
Add a single URL asset (per AdCP url-asset spec). For multi-slot formats (e.g. native), use url_assets instead.
Show child attributes
Show child attributes
URL assets assigned to specific AdCP format slots. Each entry replaces any existing asset assigned to the same slot asset_id.
50Show child attributes
Show child attributes
Text assets assigned to specific AdCP format slots. Each entry replaces any existing asset assigned to the same slot asset_id.
50Show child attributes
Show child attributes
Full creative-local click-URL query parameter list. Empty clears local additions; null values suppress inherited keys.
50Show child attributes
Show child attributes
Add a webhook asset for DCO (dynamic content).
Show child attributes
Show child attributes
Asset IDs to remove from the manifest (max 100)
1001Promote this asset to CREATIVE_SOURCE (the renderable "primary" asset). Demotes the current primary to USER_UPLOADED. Only IMAGE, VIDEO, AUDIO, HTML, and VAST assets may be set as primary.
1Reclassify existing assets to a different type
100Show child attributes
Show child attributes
Metadata for newly uploaded files being added
Show child attributes
Show child attributes
Buyer-defined frequency caps for this creative. When provided, replaces the existing list; omit to preserve.
Show child attributes
Show child attributes
Full replacement of carousel cards (image_carousel format). Max 10. Provide asset_id for existing media, filename for new uploads, or url for pre-hosted assets.
10Show child attributes
Show child attributes
Response
Update creative manifest
Creative manifest with inline assets
Creative manifest ID
Manifest name
Uploaded assets in this manifest
Show child attributes
Show child attributes
Created timestamp
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Updated timestamp
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Authoritative monotonic revision of the complete saved Creative state.
0 < x <= 9007199254740991Whether the Creative is an incomplete advertiser draft or a complete composition.
draft, complete Exact opaque revision of the buyer-preview projection. Use it to bind short-lived previews to the current manifest content.
^[a-f0-9]{64}$Creative brief text
Brand domain (auto-resolved)
Creative template used for this manifest
ADCP format identifier
Show child attributes
Show child attributes
AdCP 3.1 canonical format kind (e.g. image_carousel, video_hosted)
URL-free canonical parameters retained with the canonical format_kind identity.
Show child attributes
Show child attributes
AdCP 3.1 scope-discriminated format option reference.
- Option 1
- Option 2
Show child attributes
Show child attributes
True when this creative has no format_kind and must be upgraded before it can be assigned to new media buys. Call POST .../upgrade to set format_kind and clear this flag.
Industry identifiers (Ad-ID, ISCI, Clearcast clock, IDcrea)
Show child attributes
Show child attributes
Target format IDs (from campaign products)
Show child attributes
Show child attributes
Number of campaigns this creative is actively attached to. A reuse signal for the advertiser library (returned on the advertiser-scoped list); omitted on single-manifest reads.
0 <= x <= 9007199254740991Advertiser-library role (evergreen or reference). Absent for flight-specific creatives that live on their campaign.
evergreen, reference Provenance of the creative (uploaded/generated/connected). Today always "uploaded".
uploaded, generated, connected URL to preview the processed creative (processed HTML hosted in GCS)
Carousel card definitions for image_carousel creatives.
Show child attributes
Show child attributes
Result of HTML processing (CDN URL rewriting + macro insertion)
Show child attributes
Show child attributes
Auto-detected template info (populated when template_id was not explicitly provided)
Show child attributes
Show child attributes
Full ADCP creative manifest (built for sync)
Sync status across sales agents
Show child attributes
Show child attributes
Provider/sales-agent creative identifiers captured from sync_creatives for round-trip comparison.
Show child attributes
Show child attributes
Auto-generated Scope3 tracking URLs for impression and click measurement
Show child attributes
Show child attributes
Creative-local click-URL parameter additions.
50Show child attributes
Show child attributes
Campaign ID (omitted for advertiser-level masters)
Advertiser ID this manifest belongs to
Buyer-defined frequency caps configured for this creative
Show child attributes
Show child attributes
True when create returned a pre-existing manifest with the same (campaign_id, name) instead of inserting a new one. Only set on create responses.
Number of files in the create request that were ignored because the request hit the (campaign_id, name) dedupe path and returned a pre-existing manifest. Use the update endpoint to add or replace assets on the existing manifest. Only set when already_exists is true.
0 <= x <= 9007199254740991Format compatibility warnings emitted when an explicit format_id does not match any format accepted by the campaign products. Only set on update responses when a mismatch is detected. The creative was saved; reassign it or update the product configuration before executing.