Skip to main content

Test PIDs and Configurations

Test IDs only

Use these IDs in development only.

Media Placement Test PIDs​

Use these PIDs to test different creative formats and orientations:

PIDDescriptionCreative Format
84242Landscape creatives onlyLandscape
127546Vertical creatives onlyVertical
127547Square creatives onlySquare
128779Carousel creatives onlyCarousel
128780Multiple creative sizes & formatsMixed formats

Usage Example​

let config = TeadsAdPlacementMediaConfig(
pid: 84242,
articleUrl: URL(string: "https://example.com/article"),
enableValidationMode: true
)

let mediaPlacement = TeadsAdPlacementMedia(config, delegate: self)

do {
let adView = try mediaPlacement.loadAd()
// Add adView to your view hierarchy
} catch {
print("Failed to load ad: \(error)")
}

Media Native Placement Test PIDs​

Media Native Ads​

Use this PID to test Media Native with custom layouts:

PIDDescriptionCreative Format
124859Display creatives onlyNative creatives with custom rendering

Usage Example​

let config = TeadsAdPlacementMediaConfig(
pid: 124859,
articleUrl: URL(string: "https://example.com/article")
)

let mediaNativePlacement = TeadsAdPlacementMediaNative(config, delegate: self)

do {
let binder = try mediaNativePlacement.loadAd()
binder(nativeAdView) // Your custom TeadsNativeAdView
} catch {
print("Failed to load native ad: \(error)")
}

Feed Placement Test Configuration​

Use this configuration to test content recommendation widgets:

ParameterValueDescription
Article URLhttps://test-demo.outbrain.comTest article URL for content recommendations
Widget IDMB_1, MB_2, TEST_FEEDTest widget identifiers
Installation KeyNANOWDGT01, TESTKEY01Test installation keys
User IDnilOptional user identifier
Dark ModetrueEnable dark mode for testing

Usage Example​

let config = TeadsAdPlacementFeedConfig(
articleUrl: URL(string: "https://test-demo.outbrain.com")!,
widgetId: "MB_1",
installationKey: "NANOWDGT01",
widgetIndex: 0,
userId: nil,
darkMode: true,
extId: nil,
extSecondaryId: nil,
obPubImp: nil
)

let feedPlacement = TeadsAdPlacementFeed(config, delegate: self)

do {
let feedView = try feedPlacement.loadAd()
// Add feedView to your view hierarchy
} catch {
print("Failed to load feed: \(error)")
}

To show a placeholder without a live request, set TeadsAdPlacementFeed.testDisplay = true before creating the placement.

Recommendations API Test Configuration​

Use this configuration to test programmatic content recommendations:

ParameterValueDescription
Article URLhttps://test-demo.outbrain.comTest article URL for content recommendations
Widget IDSDK_1, RECS_1, TEST_RECSTest recommendations identifiers
Installation KeyNANOWDGT01, TESTKEY01Test installation keys
User IDnilOptional user identifier
Dark ModetrueEnable dark mode for testing

Usage Example​

let config = TeadsAdPlacementRecommendationsURLConfig(
articleUrl: URL(string: "https://test-demo.outbrain.com")!,
widgetId: "SDK_1"
)

let recommendationsPlacement = TeadsAdPlacementRecommendations(config, delegate: self)

recommendationsPlacement.loadAd { response in
for recommendation in response.recommendations {
print("Title: \(recommendation.content)")
}
}

Interstitial Placement Test Configuration​

Use this configuration to test interstitial fullscreen ads — it applies both to the direct integration and to AdMob/GAM mediation:

ParameterValueDescription
Article URLhttps://mobile-demo.outbrain.comTest article URL
Widget IDINT_APP_1Test widget identifier
Installation KeyNANOWDGT01Test installation key

Usage Example - Direct Integration​

import TeadsSDK

let config = TeadsAdPlacementInterstitialConfig(
articleUrl: URL(string: "https://mobile-demo.outbrain.com")!,
widgetId: "INT_APP_1",
installationKey: "NANOWDGT01"
)

let placement = Teads.createPlacement(with: config, delegate: self)
placement.loadAd()

Usage Example - AdMob / Google Ad Manager Mediation​

Configure the following JSON as the custom event parameter on the Google mediation setup platform:

{"articleUrl":"https://mobile-demo.outbrain.com","widgetId":"INT_APP_1","installationKey":"NANOWDGT01"}

Swift-only: this sample uses only GoogleMobileAds' own Swift overlay API (Request, InterstitialAd), not the Teads SDK directly — these third-party class/selector names are not independently verified against GoogleMobileAds' Objective-C headers, so no Objective-C translation is provided here (see the ground-truth notes on GoogleMobileAds types).

import GoogleMobileAds

let request = Request()

InterstitialAd.load(
with: "YOUR_AD_UNIT_ID", // Ad unit id obtained from Google mediation platform
request: request
) { ad, error in
if let error = error {
print("Failed to load interstitial ad: \(error.localizedDescription)")
return
}
// Ad loaded successfully
}

Use this configuration to test the anchored Banner — it applies both to the direct integration and to AdMob mediation:

ParameterValueDescription
Article URLhttps://mobile-demo.outbrain.com/Test article URL
Widget IDMB_10Test widget identifier
Installation KeyNANOWDGT01Test installation key

Usage Example - Direct Integration​

import TeadsSDK

let config = TeadsAdPlacementBannerConfig(
articleUrl: URL(string: "https://mobile-demo.outbrain.com/")!,
widgetId: "MB_10",
installationKey: "NANOWDGT01",
widgetIndex: 0
)

let placement = TeadsAdPlacementBanner(config, delegate: self)
let adView = try placement.loadAd()
view.addSubview(adView)

Usage Example - AdMob Mediation​

Configure the following JSON as the custom event parameter on the Google mediation setup platform:

{"articleUrl":"https://mobile-demo.outbrain.com/","widgetId":"MB_10","installationKey":"NANOWDGT01"}