curl --request GET \
--url https://api.interchange.io/api/v2/storefront \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.interchange.io/api/v2/storefront', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"storefrontId": "1234",
"platformId": "acme-media",
"name": "Acme Media",
"publisherDomain": "acme.com",
"operatorDomain": "scope3.com",
"brandName": "Scope3",
"logoUrl": "<string>",
"membershipStatus": "AAO_FOUNDING_MEMBER",
"regions": [
"<string>"
],
"acceptedCountries": [
"<string>"
],
"acceptsAllCountries": true,
"advertisingPolicyDisclosure": [
"brief_acceptance"
],
"advertisedCountries": [
"<string>"
],
"advertisedChannels": [
"<string>"
],
"description": "<string>",
"channels": [
"<string>"
],
"website": "<string>",
"subtitle": "<string>",
"supportUrl": "<string>",
"privacyUrl": "<string>",
"termsUrl": "<string>",
"discoveryCard": {
"storefrontId": "<string>",
"platformId": "<string>",
"storefrontKind": "managed",
"displayName": "<string>",
"logoUrl": "<string>",
"logoBackground": "dark-bg",
"description": "<string>",
"website": "<string>",
"brandColors": {},
"channels": [
"<string>"
],
"countries": [
"<string>"
],
"acceptsAllCountries": true,
"coverageDeclarations": [
{
"channels": [
"<string>"
],
"countries": [
"<string>"
],
"acceptsAllCountries": true
}
],
"advertisingPolicies": "<string>",
"coverage": {
"channels": "declared",
"countries": "declared"
},
"provenance": {
"identity": {
"displayName": "operator",
"logoUrl": "operator",
"description": "operator",
"website": "operator",
"brandColors": "operator"
},
"coverage": {
"channels": "operator",
"countries": "operator"
},
"advertisingPolicies": "operator"
}
},
"demandContactName": "<string>",
"demandContactEmail": "<string>",
"operatorDomainVerified": true,
"routingMode": "CHEF",
"adapterProviderType": "amazon",
"adapterSourceKind": "sales",
"adapterCredentialMode": "BYOK",
"plan": "basic",
"transacting": true,
"isPaused": true,
"archivedAt": "2023-11-07T05:31:56Z",
"displayStatus": "configuring",
"capabilities": {
"offersCreativeReview": false,
"offersCampaignApproval": false,
"offersProductComposition": false
},
"merchandisingEntitled": true,
"listingDistributionEntitled": true,
"configuredCapabilities": {
"offersCreativeReview": false,
"offersCampaignApproval": false,
"offersProductComposition": false
},
"compositionPricing": {
"targetPercentile": "p75",
"rateCard": {
"facts": []
}
},
"creativeApproval": "auto",
"mediaBuyApproval": "auto",
"capabilitiesLocked": true,
"advertiseAsAgent": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"businessProfile": {
"summary": "<string>",
"agentName": "<string>",
"agentPersonality": "<string>",
"propertyCount": 5000,
"channels": [
"display"
],
"regions": [
"UK",
"EMEA"
],
"verticals": [
"sports",
"entertainment"
],
"publisherDomains": [
"pitchside.co.uk",
"football.pitchside.co.uk"
],
"evidenceUrls": [
"<string>"
],
"notes": "<string>",
"updatedBy": "<string>"
},
"logoBackground": "dark-bg",
"setupIntent": "third_party_connect",
"operatingMode": "LISTING_ONLY",
"operatingCapabilities": {
"listingSelected": true,
"scope3MerchandisingSelected": true
},
"sellsThirdPartyInventory": true,
"defaultCurrency": "<string>",
"paymentCurrencies": [
"<string>"
]
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Get storefront
Get the authenticated customer’s storefront.
curl --request GET \
--url https://api.interchange.io/api/v2/storefront \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.interchange.io/api/v2/storefront', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"storefrontId": "1234",
"platformId": "acme-media",
"name": "Acme Media",
"publisherDomain": "acme.com",
"operatorDomain": "scope3.com",
"brandName": "Scope3",
"logoUrl": "<string>",
"membershipStatus": "AAO_FOUNDING_MEMBER",
"regions": [
"<string>"
],
"acceptedCountries": [
"<string>"
],
"acceptsAllCountries": true,
"advertisingPolicyDisclosure": [
"brief_acceptance"
],
"advertisedCountries": [
"<string>"
],
"advertisedChannels": [
"<string>"
],
"description": "<string>",
"channels": [
"<string>"
],
"website": "<string>",
"subtitle": "<string>",
"supportUrl": "<string>",
"privacyUrl": "<string>",
"termsUrl": "<string>",
"discoveryCard": {
"storefrontId": "<string>",
"platformId": "<string>",
"storefrontKind": "managed",
"displayName": "<string>",
"logoUrl": "<string>",
"logoBackground": "dark-bg",
"description": "<string>",
"website": "<string>",
"brandColors": {},
"channels": [
"<string>"
],
"countries": [
"<string>"
],
"acceptsAllCountries": true,
"coverageDeclarations": [
{
"channels": [
"<string>"
],
"countries": [
"<string>"
],
"acceptsAllCountries": true
}
],
"advertisingPolicies": "<string>",
"coverage": {
"channels": "declared",
"countries": "declared"
},
"provenance": {
"identity": {
"displayName": "operator",
"logoUrl": "operator",
"description": "operator",
"website": "operator",
"brandColors": "operator"
},
"coverage": {
"channels": "operator",
"countries": "operator"
},
"advertisingPolicies": "operator"
}
},
"demandContactName": "<string>",
"demandContactEmail": "<string>",
"operatorDomainVerified": true,
"routingMode": "CHEF",
"adapterProviderType": "amazon",
"adapterSourceKind": "sales",
"adapterCredentialMode": "BYOK",
"plan": "basic",
"transacting": true,
"isPaused": true,
"archivedAt": "2023-11-07T05:31:56Z",
"displayStatus": "configuring",
"capabilities": {
"offersCreativeReview": false,
"offersCampaignApproval": false,
"offersProductComposition": false
},
"merchandisingEntitled": true,
"listingDistributionEntitled": true,
"configuredCapabilities": {
"offersCreativeReview": false,
"offersCampaignApproval": false,
"offersProductComposition": false
},
"compositionPricing": {
"targetPercentile": "p75",
"rateCard": {
"facts": []
}
},
"creativeApproval": "auto",
"mediaBuyApproval": "auto",
"capabilitiesLocked": true,
"advertiseAsAgent": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"businessProfile": {
"summary": "<string>",
"agentName": "<string>",
"agentPersonality": "<string>",
"propertyCount": 5000,
"channels": [
"display"
],
"regions": [
"UK",
"EMEA"
],
"verticals": [
"sports",
"entertainment"
],
"publisherDomains": [
"pitchside.co.uk",
"football.pitchside.co.uk"
],
"evidenceUrls": [
"<string>"
],
"notes": "<string>",
"updatedBy": "<string>"
},
"logoBackground": "dark-bg",
"setupIntent": "third_party_connect",
"operatingMode": "LISTING_ONLY",
"operatingCapabilities": {
"listingSelected": true,
"scope3MerchandisingSelected": true
},
"sellsThirdPartyInventory": true,
"defaultCurrency": "<string>",
"paymentCurrencies": [
"<string>"
]
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Authorizations
API key or access token
Response
Get storefront
Storefront configuration response
Surrogate id (BIGINT serialized as string)
"1234"
Public-facing slug
"acme-media"
Display name
"Acme Media"
Publisher domain for the storefront's business profile
"acme.com"
Canonical brand domain
"scope3.com"
Brand name from AAO registry
"Scope3"
Logo URL from brand.json
AAO membership tier. Null when the operator has not set a value.
AAO_FOUNDING_MEMBER, AAO_MEMBER, NONE Legacy merchandising-region context projected from businessProfile. This does not govern brief acceptance or listing country coverage.
Operator-confirmed exhaustive country allowlist for brief routing. Null means routing scope has not been confirmed.
^[A-Z]{2}$Whether the operator explicitly accepts briefs from every country.
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.
brief_acceptance, creative_policy Standard primary countries advertised by backing AdCP sales agents. Authoritative for the listing on a pure pass-through storefront; inventory evidence otherwise.
^[A-Z]{2}$Standard primary channels advertised by backing AdCP sales agents. Authoritative for the listing on a pure pass-through storefront; inventory evidence otherwise.
Operator-curated description (overrides brand.json).
ADCP channel codes the storefront offers.
Operator-curated website URL (overrides brand.json).
Short operator-authored tagline, projected by every marketplace channel listing. Null when unset.
Operator-curated support/contact URL, projected by every marketplace channel listing. Null when unset.
Operator-curated privacy policy URL, projected by every marketplace channel listing. Null when unset.
Operator-curated Terms of Service URL, projected by every marketplace channel listing. Null when unset.
Canonical buyer-visible storefront identity and coverage. This is distinct from the legacy Business Profile merchandising inputs and seller policies.
Show child attributes
Show child attributes
Demand contact name. Null when the operator has not set one.
Demand contact email. Null when the operator has not set one.
Whether the brand domain has been verified (email match or manual KYC)
Which backend function the buyer-facing storefront dispatches to: the Merchandising Agent or an expert-run adapter.
CHEF, ADAPTER Expert-run adapter provider when routingMode is ADAPTER; null otherwise.
amazon, audiostack, elevenlabs, fal, gemini, google, linkedin, meta, openai, openai_ads, pinterest, reddit, snap, spotify, tiktok, veo Adapter role when routingMode is ADAPTER; null otherwise.
sales, creative, signals, measurement, optimization, composite Adapter credential mode when routingMode is ADAPTER; null otherwise.
BYOK Legacy v2 Seller Account plan tier
basic Deprecated compatibility projection of !isPaused; not proof that the storefront currently satisfies readiness.
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.
When the storefront was archived (read-only thereafter). Null for non-archived storefronts.
^(?:(?:\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))$Deprecated stored-control display status. This is never proof that the storefront can transact; use the readiness projection.
configuring, transacting, archived, neutral, paused 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.
Show child attributes
Show child attributes
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.
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.
Persisted operator capability flags before source-topology derivation. Compare this field for declarative writes; capabilities is the effective buyer-facing projection.
Show child attributes
Show child attributes
Composition pricing settings: fallback pricing percentile plus seller pricing facts. Separate from Scope3 contract/billing rate cards.
Show child attributes
Show child attributes
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.
auto, manual 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.
auto, manual 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.
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.
Creation timestamp (ISO 8601)
^(?:(?:\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))$Last update timestamp (ISO 8601)
^(?:(?:\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))$Operator-supplied business profile captured during Murph-led setup. Null when the operator has not shared one.
Show child attributes
Show child attributes
Backdrop the logo is designed for, from brand.json. Null or absent when unknown; the storefront card falls back to a dark tile.
dark-bg, light-bg, transparent-bg 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.
third_party_connect, sell_through_scope3 Derived display value for the mutable supply operating capabilities. Null means a legacy account has not selected a mode yet.
LISTING_ONLY, AGENTIC_MEDIA_COMPANY 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.
Show child attributes
Show child attributes
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.
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.
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.