Support by platform
For the wider unavailable OpenAI boundary, see
OpenAI Ads.
See each platform’s compatibility page for its wider creative and campaign
support.
Meta preview boundary
Meta preview requests use the ad account selected on the Interchange connection. If the source creative has already been synchronized, Interchange resolves its Meta creative ID from that advertiser and account’s creative record, then verifies the creative still reads back under the selected account. Meta preview links are treated as expiring after five minutes; use Refresh to request a new link after that deadline. For an unsynchronized image manifest, Interchange can submit a read-only transient specification. Other unsynchronized creative types must be synced before previewing. A request fails closed when the creative identity, account, format, or requested placement cannot be verified. The response contains one or more HTTPS Meta preview links, labeled by placement. Creatives already synced to Meta may also include a provider-readback image thumbnail; transient previews remain link-only. Interchange does not return executable preview HTML.TikTok preview boundary
TikTok preview requests use the advertiser account and delegated credential selected on the Interchange connection. Interchange resolves the source creative through that tenant and account’s ledger, then re-reads the exact TikTok Asset Library video. The video must still be displayable and explicitly eligible forPLACEMENT_TIKTOK.
The provider request uses TikTok’s SINGLE_VIDEO preview mode with the saved
video ID and authored display name, ad text, and required stored CTA. Existing
creatives that store the historical DOWNLOAD value continue to work;
Interchange preserves that authored identity and sends TikTok’s current
DOWNLOAD_NOW value only on provider requests. The response is one link
labeled with the existing tiktok_for_you_feed public placement ID.
That ID maps to the provider’s complete PLACEMENT_TIKTOK bundle and does not
prove a single feed destination. Interchange conservatively requires a fresh
preview after 24 hours. Provider iframe HTML and adjustment tips are discarded;
no thumbnail fallback is returned.
TikTok’s ADS_CREATION table documents SINGLE_IMAGE as Pangle-only, and its
separate SINGLE_IMAGE preview example uses PLACEMENT_PANGLE. This adapter
publishes PLACEMENT_TIKTOK and has no faithful saved-image mapping for that
preview shape. Carousel, Spark, generated, raw-URL transient, and delivery
variant requests require fields or identities the generic creative manifest
does not faithfully carry. Interchange rejects those shapes instead of
inventing provider fields or substituting a placement.
Pinterest preview boundary
Pinterest preview requests use the ad account selected on the Interchange connection. The source creative must already be synchronized and resolve to exactly one completed assignment in that account. Before requesting the preview, Interchange reads back the selected account, ad group, Pin, and ad from Pinterest and verifies that they still match the saved source record and each other. The preview’s placement label is the ad group’s exact Pinterestplacement_group (ALL, BROWSE, SEARCH, or OTHER); Interchange does not
substitute another placement.
Interchange then uses Pinterest’s
campaign_ad_preview
surface and returns one credential-free HTTPS Pinterest preview link with the
expiry Pinterest supplied. The result is link-only: it has no executable HTML,
iframe, script, or inline thumbnail. Pinterest creates an expiring preview
record for the existing assignment; this request does not create or change the
campaign, ad group, ad, or Pin. Pinterest classifies this POST under the
ads:write OAuth scope even though it does not mutate those campaign objects.
Pinterest batches accept at most four creatives; every accepted item starts in
the four-worker pool under one 30-second aggregate deadline, and a larger batch
is rejected before account, ledger, or provider work.
Unsynchronized manifests do not use Pinterest’s transient Pin or image preview
surface because that path cannot preserve the same saved account, assignment,
placement, and provider-expiry identity. Ambiguous assignments, stale or
foreign provider objects, unsupported formats, unsafe URLs, and mismatched
placement requests fail closed. Pinterest has no reference-renderer fallback
through Interchange.
Snap preview boundary
Snap preview requests use the delegated credential and ad account selected on the Interchange connection. Interchange resolves an already synchronized source creative through that tenant and account’s creative record, then reads the Snap ad account, creative, and backing media before requesting Snap’s hosted preview. The ordinary supported formats are 9:16 image and video creatives; other or unsynchronized manifests must be synchronized first. Snap batches accept at most four creatives; every accepted item starts in the four-worker pool under one 30-second aggregate deadline. Interchange rejects a larger batch before reading the account, saved creative record, or Snap API. Snap’s preview endpoint does not accept a transient creative specification or a placement selector. Interchange therefore rejects every explicit placement request rather than substituting automatic placement. A successful request returns one generic 1080×1920 full-screen render. The role describes the hosted render; it does not claim a campaign placement was selected. Snap documents its hosted page as requiring no login and remaining available for 90 days. Interchange returns the provider’s exact expiry and only constructs the externalad-preview.snapchat.com link when the signed creative ID, expiry,
and signature agree with Snap’s response. It returns no provider HTML or
thumbnail.
Google Performance Max preview boundary
Google preview requests use the customer account selected on the Interchange connection. The source creative must already be synchronized asgoogle_performance_max and resolve to exactly one completed asset-group
assignment for that tenant, customer, and source. Interchange reads back the
selected non-manager customer, exact Performance Max campaign, and exact saved
asset group before requesting Google’s UI_PREVIEW. A renamed, removed,
foreign, missing, duplicated, or in-flight identity fails closed.
The response contains one expiring, credential-free HTTPS Google Ads external
preview link. Interchange preserves Google’s expiry and returns no provider
HTML, iframe, script, thumbnail, or invented dimensions. Google’s aggregate
Performance Max UI preview does not expose a placement selector, so any
requested placement is rejected; Interchange does not label the page as a
Search, Display, YouTube, Gmail, Maps, or Discover placement.
Unsynchronized or transient input, YouTube, responsive search, responsive
display, delivery variants, unsafe URLs, and response identity drift are not
approximated. Google preview never falls back to the future community reference
renderer. This saved-preview boundary is separate from campaign creation and
does not make Performance Max buying generally available.
OpenAI Ads preview boundary
The official OpenAI Ads reference namesPOST /ads/{ad_id}/preview and says the preview expires after 24 hours.
However, the official OpenAPI schema
does not define that path, its response, an ad-preview URL field, or
preview-expiry metadata. The separate account preview_url is documented as a
favicon preview,
so Interchange does not use it as creative-preview output.
Interchange also does not approximate either OpenAI creative type. OpenAI does
not publish enough ChatGPT layout detail to reproduce a Chat Card faithfully,
and a Product Ad Template receives its image and destination from whichever
eligible feed item OpenAI selects when the ad serves, as described in the
Product Feeds guide. Until
OpenAI publishes a complete response contract and a selected-account proof
establishes a public HTTPS preview URL and exact expiry timestamp, OpenAI Ads
preview requests fail closed.
Reference-renderer fallback
First-party platform previews remain authoritative. A future community reference renderer may provide a clearly labeled approximation for a specific canonical format family when a platform preview is unavailable. No adapter currently advertises this fallback. It can become available only after that exact family is proved faithful and its ephemeral preview store is merged, deployed, configured, and able to enforce the full advertised link lifetime. A code proposal or a permanent public creative bucket is not that boundary. Until then, unsupported requests fail closed; an adapter with a first-party implementation does not silently switch to a reference renderer. TikTok, Snap, and Google have no such path today; their unsupported or unsynchronized inputs fail closed. Shared creative-generation adapters follow the same boundary.Creative-production outputs are different
preview_creative shows how an ad platform renders a creative. A creative
production tool may instead return its finished reviewable asset directly from
build_creative. For example, AudioStack
returns the rendered audio_hosted asset, which can be played without a
separate preview call. That does not make AudioStack an ad-platform adapter or
advertise preview_creative for it.
Provider references: Meta Business SDK preview surface, TikTok creative preview, TikTok video search, Snap creative preview, Pinterest shareable previews, Google ShareablePreviewService, and OpenAI Ads preview reference.