Skip to main content

Migrating from v1 to v2

The v2 Interchange API is a fundamental simplification of v1. The surface is smaller, the conventions are agent-first, and the platform now extends across both the buy side and the sell side. v1 is frozen — every integration must migrate to v2. This guide walks you through what changed and how to translate the calls you already use today.

Overview

v2 is a redesign — not a refactor. The core ideas behind Scope3 (allocation over bidding, agentic orchestration, signal-driven media quality) are unchanged. What changed is the API contract.

Simpler surface

Single endpoint, single object, full intent (SESOFI). RESTful resources replace v1’s per-action verb endpoints.

Agent-first MCP

Two generic MCP wrappers — api_call and ask_about_capability — replace dozens of per-domain MCP tools.

AAO marketplace

Native support for the Agentic Advertising Organization (AAO) — discover and buy from storefronts.

Measurement engine

First-class endpoints for hypotheses, test plans, learning cycles, and measurement data ingestion.

v2 is required. v1 is frozen and will be retired — every integration must move to v2. This guide is the path.
You can migrate incrementally: v1 and v2 run side by side, so you can move one advertiser, campaign, or workflow at a time rather than cutting over in a single shot.

Key conceptual changes

Brand Agent → Advertiser

v1 used the term Brand Agent as the top-level container for campaigns, creatives, and brand stories. v2 calls this an Advertiser. The model is the same, the name is industry-standard.

MCP tool model: per-domain → generic

In v1, each domain had its own MCP tool — brand-agent-create, campaign-update, media-buy-execute, and so on. Agents had to memorize dozens of tool names and argument shapes. In v2, every operation goes through one of three generic tools: The agent discovers capabilities at runtime via ask_about_capability and then dispatches through api_call. There is nothing to register, nothing to update when the API gains new operations.

Skill files

Both buyer and storefront roles ship a skill file that fully describes the API for any agent that can read Markdown: Point a custom agent at the skill file and it has end-to-end understanding of the API — operations, required fields, display rules, and workflow guidance.

New surfaces in v2


Endpoint mapping

v1 used verb-style RPC paths (/brand-agent-create, /campaign-update). v2 is fully RESTful with resource-oriented paths under /api/v2/buyer and /api/v2/storefront.
v2 base URLs (canonical, pinned to v2 — these will keep serving v2 after future major versions):
  • Buyer REST: https://api.interchange.io/api/v2/buyer
  • Storefront REST: https://api.interchange.io/api/v2/storefront
The unversioned forms (/api/buyer, /api/storefront) 308-redirect to whatever major version is currently stable — see Versioning.ADCP property-list resolution lives at the app-level top — GET /lists/:listId.

Core resources

v2-only endpoints (no v1 equivalent)

These exist only on v2 and are central to the new platform:
  • POST /discovery/discover-products and /discovery/{discoveryId}/... — persistent product discovery
  • POST /campaigns/{campaignId}/auto-select-products — AI-driven product selection and budget allocation
  • GET /audit-logs — full audit trail
  • GET /tasks/{taskId} — track async operations
  • GET /notifications (and unread counts via help / ask_about_capability)
  • GET /storefronts / POST /storefronts (storefront role) — sell-side surfaces
  • /advertisers/{advertiserId}/measurement-config, hypotheses, test-plans, learning-cycle/run, belief-state, testability — measurement engine
  • /advertisers/{advertiserId}/property-lists/... — allow/block lists
  • /advertisers/{advertiserId}/event-sources and /measurement-data/sync — conversion ingestion
  • /advertisers/{advertiserId}/catalogs and /syndicate — partner-agent catalog distribution
  • /accounts/current, /accounts, /accounts/create-child — multi-tenant account hierarchy
  • /notification-preferences and frequency-cap / pacing-period configs

Side-by-side: creating a campaign

Notable differences:
  • brandAgentId (string) → advertiserId (number)
  • startDate / endDate flat fields → nested flightDates object with ISO 8601 datetimes
  • budget: 50000 → nested budget object with explicit currency
  • New optional performanceConfig.optimizationGoals[] for goal-based optimization
  • Required brand field on advertiser create (e.g., "acme.com")

Authentication changes

The bearer-token model from v1 still works in v2. What’s new:

OAuth for AI agents

Connect Claude, ChatGPT, and other MCP-aware agents via OAuth. No API keys to manage.

SSO

SAML / OIDC SSO for enterprise org sign-in.

AAO OAuth

Sign in to private / member storefronts via the AAO marketplace using OAuth.

API keys

Same Bearer scope3_... format as v1 — your existing keys keep working.
If you only use API keys today, no auth changes are required. Just point your existing key at the v2 base URL.

Breaking changes checklist

When you migrate, audit for these:
  • Path style — every v1 verb endpoint (e.g. /campaign-create) maps to a RESTful resource (e.g. POST /campaigns)
  • brandAgentIdadvertiserId — and the type changed from string to number
  • Date fields — flat startDate / endDate are now nested under flightDates with required ISO 8601 datetimes (with Z suffix)
  • Budget — scalar budget: 50000 is now an object with total and currency
  • Required brand — advertiser create now requires a brand domain (e.g. "acme.com")
  • Creatives — now nested under /campaigns/{campaignId}/creatives and use a manifest model rather than per-call assign
  • Tactics — removed as a top-level concept; functionality lives in media buys + allocations
  • Outcome agents — replaced by the measurement engine (hypotheses, test plans, learning cycles)
  • MCP tools — per-domain v1 tools are not available in v2; use api_call + ask_about_capability
  • Field naming — v2 is strict camelCase. advertiser_id is rejected; use advertiserId. flight_dates is rejected; use flightDates.
  • Optimization goals — now live on performanceConfig.optimizationGoals[] with kind: "event" | "metric". Valid metric values: clicks, views, completed_views, viewed_seconds, attention_seconds, attention_score, engagements, follows, saves, profile_visits, reach. impressions is a delivery rollup, not a valid optimization target.
  • Creative assignment — done via creativeManifest rather than per-creative creative-assign calls

Skill / MCP migration

If your v1 integration drove the API through per-domain MCP tools, you’ll dispatch through the generic v2 tools instead.
The recommended pattern for any v2 agent:
1

Discover the operation

Call ask_about_capability with a natural-language description of what you want to do. The response lists candidate operations, required fields, display requirements, and workflow notes.
2

Verify every field has a source

Walk every field in body, pathParams, and params and name where it came from — a previous response, the user, or ask_about_capability. Never invent IDs or fabricate values.
3

Dispatch via api_call

Pass operation, pathParams, body, and params to api_call. The named operation enum prevents hallucinated endpoints and wrong HTTP methods.
4

Present results per the display rules

Each operation’s ask_about_capability response describes what to show the user (status, IDs, account links, sandbox flag, etc.). Show those fields — never collapse to vague prose.
Use the buyer MCP endpoint and canonical storefront agent URL below:

Sandbox

v2 has first-class sandbox support. Set "sandbox": true when creating an advertiser and every ADCP operation under that advertiser routes to sandbox accounts — no real spend, no production side effects.

Sandbox guide

Learn how to test campaigns, discovery, and media-buy flows safely.
The sandbox flag is immutable after the advertiser is created. Decide up front whether the advertiser is for production or testing.

Getting help

Quick Start

Connect an agent and make your first call in minutes.

API Reference

Browse every v2 endpoint with request and response schemas.

Authentication

OAuth, SSO, and API key setup.

Built for Agents

Detailed setup for Claude, ChatGPT, Cursor, and custom agents.

Skill File

Why a skill file beats hand-written tool wrappers.

Support

Email support@scope3.com for migration help.