Plan a directed campaign (alpha)
Task Reference
Plan a directed campaign (alpha)
Turn an advertiser brief into reviewable provider-native decisions before any write
POST
Plan a directed campaign (alpha)
Use this planning preflight when a buyer starts with an advertiser brief. It
calls the connected provider’s ordinary AdCP
The plan’s
The later create uses
Provider adapters that do not yet implement the controlled decision contract
return
get_products path, validates its
controlled planning payload, then returns the available products, a typed
decision plan, and a 30-minute proposal reference. Raw directed create remains
brief-free and defaults to decisionMode: "raw" when that field is omitted. To claim Scope3-assisted
brief strategy, accept the proposal and reference its exact digests in the
create.
Named operation: plan_directed_campaign
Meta decision plan
Meta currently supports this contract. The response is provider-neutral and top-level; adapter extension fields are validated inside Interchange and are not passed through to buyers. Controlled fields are intended for review and exact testing; narrative rationale is not used as a provider enum.product_id is the stable family and concrete_product_id is the
only product accepted by an assisted create. Accept the proposal before it
expires; proposal and acceptance are bound to the authenticated principal,
customer, advertiser, selected account subscription, and provider.
The execution snapshot is part of the plan digest. Meta prices the concrete
product in the selected ad account’s authoritative currency. For non-USD
accounts, floor_price: 0 means no account-currency floor was inferred; Meta
omits USD-only proposal and forecast guidance instead of assuming an exchange
rate. Meta rejects a missing or changed stored product or currency before
mutation and executes from this accepted snapshot.
Plan audit rows remain reviewable for at least 30 days, then become eligible for
bounded best-effort cleanup on later planning traffic; this is not a hard
deletion SLA, and the independent write journal retains replay provenance.
decisionMode: "assisted" and passes the accepted
planId, planDigest, and writeIntentDigest. Interchange verifies those
values, the planned product/pricing/geography, and the exact accepted create
intent before reserving budget or calling Meta. One accepted plan authorizes
one create; idempotent retries reuse the original create key.
Version 1 accepts only a paused, single-package write with the planned product,
pricing option, budget, and country targeting. Inline creative, actor, format,
catalog, CTA, landing-page, extension, or other package execution fields are
rejected until the plan contract can map them. Creative attachment remains
unavailable for assisted v1 until the separate sync/assignment workflow lands.
Controlled Meta brief planning currently supports contiguous age buckets from
18–24 through 65+; non-bucket or disjoint age language requires clarification
instead of being broadened. Separate account readback may preserve
provider-authored ages from 13 upward. That read compatibility does not mean
Scope3 controlled writes support under-18 targeting; on readback, age_max: 65
represents Meta’s 65+ bucket and an empty gender list means all genders.
Explicit composite ranges that align exactly to those contiguous buckets are
also supported. For example, 25-54 resolves to 25-34, 35-44, and 45-54
without broadening the requested audience. Explicit country names such as
Australia and uppercase ISO codes such as AU are grounded deterministically,
so a complete objective/geography/creative brief does not depend on the optional
model interpreter being available.
Conversion, app-install, and lead briefs currently return
execution_setup_unavailable because the directed write contract cannot yet
carry the promoted-object setup those objectives require. Planning does not
pretend those campaigns are executable.
Clarification is a successful planning result
If the brief is ambiguous, omits geography or objective, contains instruction conflicts, requests unresolved interest or exclusion targeting, or asks for an unverified creative/localization path, Meta returnsstatus: "clarification_required", plan: null, plan_ref: null, and no
actionable products.
The current contract models positive targeting only, so exclusions must be
resolved explicitly rather than being reinterpreted as inclusions. Ask the buyer
to resolve the named clarification_codes; do not silently choose defaults and
do not proceed to a provider write.
CAPABILITY_NOT_SUPPORTED. They can still list products or accept a raw
directed write when those separate capabilities are enabled.
See Directed campaigns (alpha),
List directed campaign products,
Accept a directed campaign plan,
and Create campaign.