Skip to main content
PUT
/
campaigns
/
{campaignId}
Update campaign
curl --request PUT \
  --url https://api.interchange.io/api/v2/buyer/campaigns/{campaignId} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>"
}
'
{
  "campaign": {
    "campaignId": "cmp_987654321",
    "advertiserId": "12345",
    "name": "Summer 2025 Campaign",
    "createdAt": "2025-01-15T10:30:00Z",
    "updatedAt": "2025-01-20T14:45:00Z",
    "mediaBuyRefs": [
      {
        "mediaBuyId": "mb_ETBn4gJ9Wu",
        "status": "ACTIVE"
      }
    ],
    "brief": "<string>",
    "flightDates": {
      "startDate": "2025-01-15T00:00:00Z",
      "endDate": "2025-03-31T23:59:59Z"
    },
    "budget": {
      "total": 1,
      "currency": "USD",
      "dailyCap": 1
    },
    "mediaBudget": {
      "total": 1,
      "currency": "<string>"
    },
    "fees": [
      {
        "label": "<string>",
        "amount": 1,
        "currency": "<string>",
        "marginPercent": 1,
        "unitPrice": 1
      }
    ],
    "allocatedBudget": 7500,
    "unallocatedBudget": 2500,
    "pacingPeriods": {
      "periods": [
        {
          "label": "<string>",
          "start": "<string>",
          "end": "<string>",
          "weight": 5,
          "budget": 1
        }
      ]
    },
    "constraints": {
      "geo_countries": [
        "<string>"
      ],
      "geo_countries_exclude": [
        "<string>"
      ],
      "geo_regions": [
        "<string>"
      ],
      "geo_regions_exclude": [
        "<string>"
      ],
      "geo_metros": [
        {
          "system": "nielsen_dma",
          "values": [
            "<string>"
          ]
        }
      ],
      "geo_metros_exclude": [
        {
          "system": "nielsen_dma",
          "values": [
            "<string>"
          ]
        }
      ],
      "geo_postal_areas": [
        {
          "country": "<string>",
          "system": "postal_code",
          "values": [
            "<string>"
          ]
        }
      ],
      "geo_postal_areas_exclude": [
        {
          "country": "<string>",
          "system": "postal_code",
          "values": [
            "<string>"
          ]
        }
      ],
      "language": [
        "<string>"
      ],
      "device_platform": [
        "ios"
      ],
      "device_type": [
        "desktop"
      ],
      "device_type_exclude": [
        "desktop"
      ],
      "channels": [
        "<string>"
      ],
      "countries": [
        "<string>"
      ]
    },
    "storefronts": [
      {
        "id": 42,
        "platformId": "acme-media",
        "name": "Acme Media"
      }
    ],
    "performanceConfig": {
      "optimizationGoals": [
        {
          "kind": "event",
          "eventSources": [
            {
              "eventSourceId": "website_pixel",
              "customEventName": "<string>",
              "valueField": "value",
              "valueFactor": 1
            }
          ],
          "target": {
            "kind": "cost_per",
            "value": 25
          },
          "attributionWindow": {
            "postClick": {
              "interval": 7,
              "unit": "days"
            },
            "postView": {
              "interval": 1,
              "unit": "days"
            }
          },
          "priority": 1
        }
      ]
    },
    "catalogId": 42,
    "discoveryId": "session_abc123",
    "productCount": 15,
    "products": [
      {
        "productId": "prod_123"
      }
    ],
    "audiences": [
      {
        "audienceId": "aud_123",
        "name": "Tech Enthusiasts 25-34",
        "status": "READY",
        "type": "TARGET",
        "enabledAt": "2025-03-01T12:00:00Z"
      }
    ],
    "creativeFormats": {
      "required": [
        {
          "agent_url": "<string>",
          "id": "<string>"
        }
      ],
      "covered": [
        {
          "agent_url": "<string>",
          "id": "<string>"
        }
      ],
      "missing": [
        {
          "agent_url": "<string>",
          "id": "<string>"
        }
      ]
    },
    "propertyLists": {
      "propertyLists": [
        {
          "listId": "<string>",
          "name": "<string>",
          "propertyCount": 4503599627370495,
          "createdAt": "<string>",
          "updatedAt": "<string>",
          "viaMediaBuys": [
            {
              "mediaBuyId": "<string>",
              "packageIds": [
                "<string>"
              ]
            }
          ]
        }
      ],
      "summary": {
        "totalLists": 4503599627370495,
        "includeCount": 4503599627370495,
        "excludeCount": 4503599627370495
      }
    },
    "mediaBuys": [
      {
        "mediaBuyId": "<string>",
        "name": "<string>",
        "status": "<string>",
        "createdAt": "2023-11-07T05:31:56Z",
        "updatedAt": "2023-11-07T05:31:56Z",
        "startTime": "2025-04-14T00:00:00Z",
        "endTime": "2025-04-30T23:59:59Z",
        "products": [
          {
            "productId": "<string>",
            "productName": "<string>",
            "publisherName": "<string>",
            "salesAgentName": "<string>",
            "budget": 123,
            "budgetCurrency": "<string>"
          }
        ],
        "pacingPeriods": {
          "periods": [
            {
              "label": "<string>",
              "start": "<string>",
              "end": "<string>",
              "weight": 5,
              "budget": 1
            }
          ]
        },
        "packages": [
          {
            "packageId": "<string>",
            "status": "<string>",
            "productIds": [
              "<string>"
            ],
            "budget": 123,
            "budgetCurrency": "<string>",
            "pacing": "<string>",
            "bidPrice": 123,
            "delivery": {
              "impressions": 123,
              "spend": 123,
              "clicks": 123
            }
          }
        ],
        "optimizationGoals": [
          {
            "kind": "metric",
            "metric": "clicks",
            "reach_unit": "individuals",
            "target_frequency": {
              "window": {
                "interval": 2,
                "unit": "seconds"
              },
              "min": 2,
              "max": 2
            },
            "view_duration_seconds": 123,
            "target": {
              "kind": "cost_per",
              "value": 123
            },
            "priority": 2
          }
        ],
        "performance": {
          "impressions": 123,
          "spend": 123,
          "clicks": 123,
          "views": 123,
          "completedViews": 123,
          "conversions": 123,
          "leads": 123,
          "lastUpdated": "2023-11-07T05:31:56Z"
        }
      }
    ],
    "dataDelivery": {
      "outputs": [
        {
          "outputConfigId": "<string>",
          "enabled": true,
          "credentialId": "<string>",
          "credentialName": "<string>",
          "deliveryConfig": {
            "type": "GCS",
            "pathPrefix": "",
            "format": "JSONL"
          },
          "createdAt": "<string>",
          "updatedAt": "<string>",
          "syncWeeklyDay": 3
        }
      ]
    },
    "frequencyCaps": [
      {
        "max_impressions": 3,
        "window": {
          "interval": 2,
          "unit": "seconds"
        },
        "id": "12345",
        "targetId": "camp_abc123",
        "createdAt": "<string>",
        "updatedAt": "<string>",
        "archivedAt": "<string>"
      }
    ]
  }
}

Authorizations

Authorization
string
header
required

API key or access token

Path Parameters

id
string
required

Unique identifier for the campaign

Minimum string length: 1
Example:

"cmp_987654321"

Body

application/json

Request body for updating a campaign

name
string

Updated campaign name

Required string length: 1 - 255
flightDates
object

Updated campaign flight dates

budget
object

Updated budget configuration (partial updates allowed)

brief
string

Updated campaign brief

Maximum string length: 5000
constraints
object
storefrontIds
integer[]

Updated storefront filter for the campaign. Pass an empty array to clear (no storefront limit). Subsequent product discovery runs against this campaign auto-apply the new filter.

Maximum array length: 50
Required range: x <= 9007199254740991
Example:
[42, 57]
discoveryId
string

Attach a discovery session to the campaign

Minimum string length: 1
audienceConfig
object

Audience targeting and suppression configuration. Use deleteMissing: true to replace the full audience set.

performanceConfig
object

Updated performance configuration

optimizationApplyMode
enum<string>

Controls whether Scope3 AI model optimizations to media buys are applied automatically or require manual approval. If omitted, inherits the advertiser-level setting.

Available options:
AUTO,
MANUAL
catalogId
integer | null

Catalog ID to attach (or null to detach the current catalog)

Required range: x <= 9007199254740991
mediaBuys
object[]

Media buy actions. Each entry targets a specific media buy by ID. Use action: "update" (default) to modify, "cancel" to cancel, or "delete" to archive.

pacingPeriods
object

Pacing schedule for the campaign. Set to null to remove pacing periods and revert to standard single-period behavior. Can only be modified on DRAFT campaigns.

utmConfig
object

UTM (Urchin Tracking Module) parameter configuration for this campaign. Use deleteMissing: true to replace; otherwise additive.

dataDelivery
object

Campaign-scoped data-delivery configuration. Groups Data Delivery Outputs that override advertiser-scoped delivery for the same dataDeliveryType. Omit to leave existing config untouched.

frequencyCaps
object[]

Buyer-side frequency cap configs for this campaign. When provided, replaces all existing non-archived caps for this campaign (pass an empty array to clear). Omit to leave existing caps untouched.

Response

Update campaign

Response containing a single campaign

campaign
object
required

Campaign resource representation