Skip to main content
PUT
/
campaigns
/
{campaignId}
/
creatives
/
{creativeId}
Update creative manifest
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 '{}'
{
  "creative_id": "<string>",
  "name": "<string>",
  "assets": [
    {
      "asset_id": "<string>",
      "name": "<string>",
      "original_filename": "<string>",
      "content_type": "<string>",
      "file_size": 0,
      "public_url": "<string>",
      "created_at": "2023-11-07T05:31:56Z",
      "slot_asset_id": "<string>",
      "asset_control": {
        "locked_asset": true,
        "can_transform": true,
        "preservation_notes": "<string>",
        "source_asset_id": "<string>",
        "rendition_asset_id": "<string>"
      },
      "width": 123,
      "height": 123,
      "warnings": [
        {
          "message": "<string>"
        }
      ]
    }
  ],
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "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>",
  "format_option_ref": {
    "scope": "publisher",
    "publisher_domain": "<string>",
    "format_option_id": "<string>"
  },
  "requires_upgrade": true,
  "industry_identifiers": [
    {
      "value": "<string>"
    }
  ],
  "target_format_ids": [
    {
      "id": "<string>",
      "agent_url": "<string>",
      "width": 123,
      "height": 123,
      "duration_ms": 123
    }
  ],
  "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>"
  },
  "creative_manifest": "<unknown>",
  "sync_status": {
    "synced": true,
    "agent_count": 0,
    "last_synced_at": "2023-11-07T05:31:56Z"
  },
  "tracking": {
    "supported_macros": [
      "<string>"
    ],
    "impression_tracker_url": "<string>",
    "click_tracker_url": "<string>"
  },
  "campaign_id": "<string>",
  "brand_agent_id": "<string>",
  "frequencyCaps": [
    {
      "max_impressions": 3,
      "window": {
        "interval": 2,
        "unit": "seconds"
      },
      "id": "12345",
      "targetId": "camp_abc123",
      "createdAt": "<string>",
      "updatedAt": "<string>",
      "archivedAt": "<string>"
    }
  ],
  "already_exists": true,
  "ignored_files": 4503599627370495
}

Authorizations

Authorization
string
header
required

API key or access token

Path Parameters

campaignId
string
required

Campaign ID

Minimum string length: 1
creativeId
string
required

Creative manifest ID

Minimum string length: 1

Body

application/json

JSON metadata for updating a creative manifest

name
string

Updated manifest name

Required string length: 1 - 255
message
string

Updated creative brief

Maximum string length: 5000
format_id
object
format_kind
string

Updated AdCP 3.1 canonical format kind. Alternative to format_id for canonical formats.

format_option_ref
object

Updated format_option_ref. Accepts scope:"publisher" (requires publisher_domain) or scope:"product". Legacy flat shape without scope is also accepted.

industry_identifiers
object[]

Updated industry identifiers. Replaces existing list.

target_format_ids
object[]

Additional format IDs this creative covers beyond its primary format_id. Replaces the existing list.

template_id
string

Updated creative template ID

click_url
string<uri>

Canonical click-through URL. Server binds this to the AdCP click_url slot and refreshes click tracking metadata.

url_asset
object

Add a single URL asset (per AdCP url-asset spec). For multi-slot formats (e.g. native), use url_assets instead.

url_assets
object[]

URL assets bound to specific AdCP format slots. Each entry replaces any existing asset bound to the same slot asset_id.

Maximum array length: 50
text_assets
object[]

Text assets bound to specific AdCP format slots. Each entry replaces any existing asset bound to the same slot asset_id.

Maximum array length: 50
webhook_asset
object

Add a webhook asset for DCO (dynamic content).

delete_asset_ids
string[]

Asset IDs to remove from the manifest (max 100)

Maximum array length: 100
Minimum string length: 1
primary_asset_id
string

Promote 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.

Minimum string length: 1
reclassify_assets
object[]

Reclassify existing assets to a different type

Maximum array length: 100
new_assets
object[]

Metadata for newly uploaded files being added

frequencyCaps
object[]

Buyer-defined frequency caps for this creative. When provided, replaces the existing list; omit to preserve.

cards
object[]

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.

Maximum array length: 10

Response

Update creative manifest

Creative manifest with inline assets

creative_id
string
required

Creative manifest ID

name
string
required

Manifest name

assets
object[]
required

Uploaded assets in this manifest

created_at
string<date-time>
required

Created timestamp

Pattern: ^(?:(?:\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_at
string<date-time>
required

Updated timestamp

Pattern: ^(?:(?:\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))$
message
string

Creative brief text

brand_domain
string

Brand domain (auto-resolved)

template_id
string

Creative template used for this manifest

format_id
object
format_kind
string

AdCP 3.1 canonical format kind (e.g. image_carousel, video_hosted)

format_option_ref
object

AdCP 3.1 scope-discriminated format option reference.

requires_upgrade
boolean

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
object[]

Industry identifiers (Ad-ID, ISCI, Clearcast clock, IDcrea)

target_format_ids
object[]

Target format IDs (from campaign products)

preview_url
string<uri>

URL to preview the processed creative (processed HTML hosted in GCS)

Carousel card definitions for image_carousel creatives.

html_processing
object

Result of HTML processing (CDN URL rewriting + macro insertion)

auto_detected_template
object

Auto-detected template info (populated when template_id was not explicitly provided)

creative_manifest
any

Full ADCP creative manifest (built for sync)

sync_status
object

Sync status across sales agents

tracking
object

Auto-generated Scope3 tracking URLs for impression and click measurement

campaign_id
string

Campaign ID (omitted for advertiser-level masters)

brand_agent_id
string

Advertiser (brand agent) ID this manifest belongs to

frequencyCaps
object[]

Buyer-defined frequency caps configured for this creative

already_exists
boolean

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.

ignored_files
integer

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.

Required range: 0 <= x <= 9007199254740991