Skip to main content
PUT
Update storefront

Authorizations

Authorization
string
header
required

API key or access token

Body

application/json

Request body for updating a storefront

name
string

Updated display name

Required string length: 1 - 255
Example:

"Acme Media Network"

publisherDomain
string

Deprecated legacy singular publisher domain. Use businessProfile.publisherDomains / publisher-domain sync state for the storefront publisher-domain set.

Required string length: 1 - 255
plan
enum<string>

Updated plan tier

Available options:
basic
transacting
boolean

Deprecated compatibility alias for the inverse of isPaused. It is not effective transaction availability.

isPaused
boolean

Compatibility-named seller intake hold. True hides product discovery and blocks new media buys and buyer edits; approved unsent buys wait until it is false. It does not pause existing ad-server delivery. New storefronts default to false; effective transaction availability also depends on readiness and archival state.

marketplaceParticipation
enum<string>

Seller publication choice for an otherwise eligible Storefront. OPTED_OUT removes it from buyer discovery and automatic selection without changing Scope3 eligibility review; PUBLISHED cannot make an ineligible Storefront eligible.

Available options:
PUBLISHED,
OPTED_OUT
sellsThirdPartyInventory
boolean

Set to true to also resell third-party inventory from other Interchange storefronts; false to sell only the storefront’s own inventory sources.

defaultCurrency
string

Seller-confirmed settlement currency (ISO-4217). Required before go-live for Interchange-cleared Seller Accounts; never defaulted silently. Direct sales adapter Seller Accounts run by our expert agents skip settlement-currency readiness checks because Interchange does not pay the seller on that path.

Pattern: ^[A-Z]{3}$
Example:

"EUR"

paymentCurrencies
string[]

ISO-4217 currencies this Seller Account will be paid in (the payout set). A media buy settles in one of these (the primary defaultCurrency is always included). The buyer payment currency is the seller payout currency unless the marketplace accepts the buyer currency via cross-currency FX, in which case the source cost is converted to the buyer currency at the platform spot rate while the source is still paid in one of these currencies. A pricing option may not use a settlement currency outside this set. Empty falls back to defaultCurrency, so a single-currency Seller Account need not set it. Duplicates are ignored.

Maximum array length: 25
Pattern: ^[A-Z]{3}$
Example:
acceptedCountries
string[] | null

Replace the operator-confirmed exhaustive country allowlist used to route briefs. This is acceptance policy, not listing merchandising. Pass null to mark the scope unconfigured.

Required array length: 1 - 249 elements
Pattern: ^[A-Z]{2}$
Example:
acceptsAllCountries
boolean

Set true to accept briefs from every country. Set false with acceptedCountries: null to clear routing scope to unconfigured.

advertisingPolicyDisclosure
enum<string>[]

AI Business Rules sections to publish as Advertising Policies on the listing. Empty hides the disclosure. Approval routing, review mode, and revision notes are never published. Listing and Merchandising storefronts can select local disclosure; source-native upstream policies remain independently applicable.

Maximum array length: 2

An AI Business Rules section the seller elects to disclose publicly as Advertising Policies on its listing.

Available options:
brief_acceptance,
creative_policy
supportedLanguages
string[]

Languages (BCP-47) the co-branded join/signup surface may localize within.

Required string length: 2 - 35
Example:
operatorDomain
string

Canonical brand domain for AAO registry lookup. Changing it invalidates description, channels, membershipStatus, and website values curated for the prior identity. Resupply valid values in the same request or acknowledge their removal with confirmOperatorDomainProfileReset.

Required string length: 1 - 255
Example:

"scope3.com"

confirmOperatorDomainProfileReset
boolean

Required when changing operatorDomain would clear profile fields curated for the previous identity: description, channels, membershipStatus, or website. Fields explicitly resupplied in the same request are preserved/replaced. Ignored when the domain is unchanged or no populated fields would be cleared.

brandName
string

Brand name resolved from AAO registry

Maximum string length: 255
Example:

"Scope3"

logoUrl
string<uri>

Logo URL resolved from brand.json

Maximum string length: 2048
logoBackground
enum<string> | null

Backdrop the resolved logo is designed for, from brand.json. Drives the storefront card tile color. Pass null to clear.

Available options:
dark-bg,
light-bg,
transparent-bg
membershipStatus
enum<string>

AAO membership tier displayed on the storefront card. Use NONE to hide the badge.

Available options:
AAO_FOUNDING_MEMBER,
AAO_MEMBER,
NONE
regions
string[]

Compatibility write alias for legacy businessProfile.regions merchandising context. It does not route briefs or define listing country coverage. Prefer businessProfile.regions when maintaining legacy context.

Maximum array length: 64
Pattern: ^[A-Z0-9_-]{2,32}$
Example:
description
string | null

Operator-curated description shown on the storefront card. Overrides brand.json when set.

Maximum string length: 2000
channels
enum<string>[]

AdCP MediaChannel codes the storefront offers, or the legacy audio/video aliases. Surfaced on the storefront card.

Maximum array length: 22

Channel.

Available options:
display,
olv,
social,
search,
ctv,
linear_tv,
radio,
streaming_audio,
podcast,
dooh,
ooh,
print,
cinema,
email,
gaming,
retail_media,
influencer,
affiliate,
product_placement,
sponsored_intelligence,
audio,
video
Example:
website
string<uri>

Operator-curated website URL shown on the storefront card. Overrides brand.json when set.

Maximum string length: 2048
subtitle
string | null

Short operator-authored tagline for the storefront. A single fact projected by every marketplace channel listing (e.g. the ChatGPT app), truncated to a shorter cap only where a channel enforces one. Pass null to clear.

Maximum string length: 160
supportUrl
string<uri> | null

Operator-curated support/contact URL for this storefront. Projected by every marketplace channel listing; not entered separately per channel. Pass null to clear.

Maximum string length: 2048
privacyUrl
string<uri> | null

Operator-curated privacy policy URL for this storefront. Projected by every marketplace channel listing; not entered separately per channel. Pass null to clear.

Maximum string length: 2048
termsUrl
string<uri> | null

Operator-curated Terms of Service URL for this storefront. Projected by every marketplace channel listing; not entered separately per channel. Pass null to clear.

Maximum string length: 2048
demandContactName
string | null

Name of the person at the publisher who fields buyer inquiries (RFPs, prospective briefs, weekly digests). Must be set together with demandContactEmail. Pass null to clear (both fields must be cleared together).

Required string length: 1 - 255
Example:

"Pia Eberhardt"

demandContactEmail
string<email> | null

Email address for the demand contact. Must be set together with demandContactName. Pass null to clear (both fields must be cleared together).

Maximum string length: 320
Pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
Example:

"pia@nrcmediagroep.com"

capabilities
object

Legacy v2 capability object. All flags remain persisted for compatibility, but the effective offersProductComposition response and runtime behavior are derived from merchandising access and ready Source product paths. V3 publishes the optional deprecated boolean as a typed no-op, strips it before dispatch, and reports it as ignored.

setupIntent
enum<string>

Record the operator's declared selling intent. This is descriptive state only: it does not change Source product paths or effective capabilities. Both 'sell_through_scope3' and 'third_party_connect' are accepted regardless of current Source types.

Available options:
third_party_connect,
sell_through_scope3
operatingMode
enum<string>

Select the organization's mutable seller product. Listing is included in both choices; Agentic Media Company adds Scope3's hosted Merchandising Agent. This does not change admission, package entitlement, Source treatment, or software ownership.

Available options:
LISTING_ONLY,
AGENTIC_MEDIA_COMPANY
compositionPricing
object

Replace storefront composition pricing settings: fallback pricing percentile plus seller pricing facts extracted from rate cards, media kits, or operator instructions.

creativeApproval
enum<string>

Operator setting: how creatives buyers submit are handled on ad-server-backed inventory sources. manual queues each for review; auto approves without review. External sales agents and linked Storefronts keep their own approval settings.

Available options:
auto,
manual
mediaBuyApproval
enum<string>

Operator setting: how new media buys are handled on ad-server-backed inventory sources. manual queues each for review; auto lets the buy start without review. External sales agents and linked Storefronts keep their own approval settings.

Available options:
auto,
manual
businessProfile
object | null

Whole-document replacement for the operator-supplied business profile captured during Murph-led setup. New evidence URLs must use HTTP(S); a previously stored legacy URI may be submitted unchanged so read/modify/write clients can round-trip the profile. Pass null to clear.

confirmCurrencyCatalogImpact
boolean

Required when changing defaultCurrency on a transacting Seller Account would hide products currently visible to buyers (operator fixed prices are only shown in the Seller Account's settlement currency). The request is rejected with the affected product count unless this is true. Ignored when the Seller Account is not transacting or the currency change has no buyer-visible impact.

acknowledgeNoHumanReview
boolean

Required to move creativeApproval or mediaBuyApproval to auto. In auto, work proceeds without human review. Brief Acceptance qualifies product discovery; automatic media-buy creation adds no second evaluator gate. The request is rejected unless this is true. Ignored when tightening to manual, or when the setting is already auto.

Response

Update storefront

Storefront configuration response

storefrontId
string
required

Surrogate id (BIGINT serialized as string)

Example:

"1234"

platformId
string
required

Public-facing slug

Example:

"acme-media"

name
string
required

Display name

Example:

"Acme Media"

publisherDomain
string | null
required

Publisher domain for the storefront's business profile

Example:

"acme.com"

operatorDomain
string | null
required

Canonical brand domain

Example:

"scope3.com"

brandName
string | null
required

Brand name from AAO registry

Example:

"Scope3"

logoUrl
string | null
required

Logo URL from brand.json

membershipStatus
enum<string> | null
required

AAO membership tier. Null when the operator has not set a value.

Available options:
AAO_FOUNDING_MEMBER,
AAO_MEMBER,
NONE
regions
string[]
required

Legacy merchandising-region context projected from businessProfile. This does not govern brief acceptance or listing country coverage.

acceptedCountries
string[] | null
required

Operator-confirmed exhaustive country allowlist for brief routing. Null means routing scope has not been confirmed.

Pattern: ^[A-Z]{2}$
acceptsAllCountries
boolean
required

Whether the operator explicitly accepts briefs from every country.

advertisingPolicyDisclosure
enum<string>[]
required

Seller-selected AI Business Rules sections disclosed publicly as Advertising Policies. Empty means no local disclosure.

An AI Business Rules section the seller elects to disclose publicly as Advertising Policies on its listing.

Available options:
brief_acceptance,
creative_policy
advertisedCountries
string[]
required

Standard primary countries advertised by backing AdCP sales agents. Authoritative for the listing on a pure pass-through storefront; inventory evidence otherwise.

Pattern: ^[A-Z]{2}$
advertisedChannels
string[]
required

Standard primary channels advertised by backing AdCP sales agents. Authoritative for the listing on a pure pass-through storefront; inventory evidence otherwise.

description
string | null
required

Operator-curated description (overrides brand.json).

channels
string[]
required

ADCP channel codes the storefront offers.

website
string | null
required

Operator-curated website URL (overrides brand.json).

subtitle
string | null
required

Short operator-authored tagline, projected by every marketplace channel listing. Null when unset.

supportUrl
string | null
required

Operator-curated support/contact URL, projected by every marketplace channel listing. Null when unset.

privacyUrl
string | null
required

Operator-curated privacy policy URL, projected by every marketplace channel listing. Null when unset.

termsUrl
string | null
required

Operator-curated Terms of Service URL, projected by every marketplace channel listing. Null when unset.

discoveryCard
object
required

Canonical buyer-visible storefront identity and coverage. This is distinct from the legacy Business Profile merchandising inputs and seller policies.

demandContactName
string | null
required

Demand contact name. Null when the operator has not set one.

demandContactEmail
string | null
required

Demand contact email. Null when the operator has not set one.

operatorDomainVerified
boolean
required

Whether the brand domain has been verified (email match or manual KYC)

routingMode
enum<string>
required

Which backend function the buyer-facing storefront dispatches to: the Merchandising Agent or an expert-run adapter.

Available options:
CHEF,
ADAPTER
adapterProviderType
enum<string> | null
required

Expert-run adapter provider when routingMode is ADAPTER; null otherwise.

Available options:
amazon,
audiostack,
elevenlabs,
fal,
gemini,
google,
linkedin,
meta,
openai,
openai_ads,
pinterest,
reddit,
snap,
spotify,
tiktok,
veo
adapterSourceKind
enum<string> | null
required

Adapter role when routingMode is ADAPTER; null otherwise.

Available options:
sales,
creative,
signals,
measurement,
optimization,
composite
adapterCredentialMode
enum<string> | null
required

Adapter credential mode when routingMode is ADAPTER; null otherwise.

Available options:
BYOK
plan
enum<string>
required

Legacy v2 Seller Account plan tier

Available options:
basic
transacting
boolean
required

Deprecated compatibility projection of !isPaused; not proof that the storefront currently satisfies readiness.

isPaused
boolean
required

Compatibility-named seller intake hold. True blocks discovery, new buys, and buyer edits but does not pause existing delivery. False is neutral; it does not by itself make the storefront live.

archivedAt
string<date-time> | null
required

When the storefront was archived (read-only thereafter). Null for non-archived storefronts.

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))$
displayStatus
enum<string>
required

Deprecated stored-control display status. This is never proof that the storefront can transact; use the readiness projection.

Available options:
configuring,
transacting,
archived,
neutral,
paused
capabilities
object
required

Effective buyer-facing AdCP capabilities. Product composition derives from merchandising access and ready Source product paths; it is not locked to the legacy configured flag.

merchandisingEntitled
boolean
required

Whether the Seller Account commercial plan entitles it to Merchandising. This is a server-derived commercial fact, separate from needing a connected source that is ready to supply products your storefront can sell, such as an ad server.

listingDistributionEntitled
boolean
required

Whether the Seller Account commercial plan entitles it to Listing + Distribution. This is independent from Merchandising and from the connected sales agent that fulfills the listing.

configuredCapabilities
object
required

Persisted operator capability flags before source-topology derivation. Compare this field for declarative writes; capabilities is the effective buyer-facing projection.

compositionPricing
object
required

Composition pricing settings: fallback pricing percentile plus seller pricing facts. Separate from Scope3 contract/billing rate cards.

creativeApproval
enum<string>
required

Stored operator setting for creative submissions. It applies at Interchange-managed review checkpoints; a connected sales agent or downstream source may enforce additional source-native review.

Available options:
auto,
manual
mediaBuyApproval
enum<string>
required

Stored operator setting for new media buys. It applies when the storefront exposes an Interchange-managed campaign-approval checkpoint; a connected sales agent or downstream source may enforce additional source-native review.

Available options:
auto,
manual
capabilitiesLocked
boolean
required

Legacy topology projection: true when the storefront has at least one active ad-server-backed inventory source (executionType=MANAGED_SALES_AGENT). Product composition is now Source-derived, so this value does not authorize or lock capability writes.

advertiseAsAgent
boolean
required

Derived: true when the Storefront has an active Inventory Source, an active embedded Sales Agent, adapter routing, or an advertised Storefront-owned capability. Every active Source remains behind the buyer-facing Storefront AdCP endpoint, including COMPOSING-only Sources.

createdAt
string<date-time>
required

Creation timestamp (ISO 8601)

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))$
updatedAt
string<date-time>
required

Last update timestamp (ISO 8601)

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))$
businessProfile
object | null
required

Operator-supplied business profile captured during Murph-led setup. Null when the operator has not shared one.

logoBackground
enum<string> | null

Backdrop the logo is designed for, from brand.json. Null or absent when unknown; the storefront card falls back to a dark tile.

Available options:
dark-bg,
light-bg,
transparent-bg
setupIntent
enum<string> | null

Compatibility record of the reversible signup package choice, or null when none was selected. It is not a behavioral mode: what the storefront exposes is always the derived capabilities and its Source treatment.

Available options:
third_party_connect,
sell_through_scope3
operatingMode
enum<string> | null

Derived display value for the mutable supply operating capabilities. Null means a legacy account has not selected a mode yet.

Available options:
LISTING_ONLY,
AGENTIC_MEDIA_COMPANY
operatingCapabilities
object | null

Mutable account capabilities for listing and Scope3 merchandising. Listing is always enabled after selection; null means a legacy account has not selected a product yet.

sellsThirdPartyInventory
boolean

Operator toggle: when true, the storefront also resells third-party inventory from other Interchange storefronts (composition draws from the marketplace in addition to its own sources). When false/absent (default), the storefront sells only its own inventory sources.

defaultCurrency
string | null

Seller-confirmed primary settlement currency (ISO-4217). Null until confirmed; required before go-live for Interchange-cleared Seller Accounts. Direct sales adapter Seller Accounts run by our expert agents skip settlement-currency readiness checks because Interchange does not pay the seller on that path.

paymentCurrencies
string[]

ISO-4217 currencies the Seller Account will be paid in (the payout set). A media buy settles in one of these. Empty falls back to defaultCurrency. The marketplace may additionally accept buyer currencies outside this set via cross-currency FX, converting each source cost to the buyer currency at the platform spot rate.