Skip to content

Features that just work.

Unified API. Privacy handled. All networks, one integration.Copy, paste, ship.

What you get

  • Server-side ad insertion for Apple TV, Fire TV, Roku, Android TV
  • Live & VOD support with HLS and DASH manifests
  • Signed logs for every insertion decision
How to validate

Architecture

┌──────────────┐    ┌─────────────┐    ┌──────────────┐
│  CTV App     │───▶│  Apex SSAI  │───▶│  Stitched      │
│  (Player)    │    │  Server     │    │  Stream        │
└──────────────┘    └─────────────┘    └──────────────┘
                           │
                    ┌──────┴──────┐
                    │  Ad Server  │
                    └─────────────┘
Developer Experience

Integrate once. Access all networks.

Stop juggling 8 SDKs with 8 different APIs. One integration, every ad network.Three lines of Kotlin. That's it.

Android SDK - Initialize
// Application.onCreate()
ApexMediation.initialize(
    context = this,
    appId = "your-app-id"
)

// That's it. You're live.
// No XML. No manifest edits. No callbacks.
Android SDK - Show Interstitial
// Load an interstitial
val interstitial = ApexInterstitial(placementId)

interstitial.load()

// Show when ready
interstitial.show(activity) { result ->
    when (result) {
        is AdResult.Shown   -> // Ad displayed
        is AdResult.Clicked -> // User engaged
        is AdResult.Closed  -> // Continue app flow
    }
}
3
Lines to integrate
0
XML config files
1
Integration point
8+
Ad networks

Unified API

Same interface for banners, interstitials, rewarded, native. Learn once, use everywhere.

No boilerplate

No lifecycle callbacks to wire. Minimal manifest wiring. No fragile XML plumbing.

Server-controlled

Change networks, waterfalls, and settings without app updates. OTA configuration.

Privacy First

Consent? Handled.

GDPR, CCPA, COPPA, TCF 2.2, US Privacy—all flow through automatically.Three ways to pass consent. All of them easy.

Android SDK - Consent
// Option 1: One-liner with Google UMP
ApexMediation.requestGoogleConsentForm(activity, callback = object : UmpConsentClient.Callback {
  override fun onConsentUpdated() {
    // (Optional) read IAB strings and pass to the SDK
    val state = ConsentManager.fromIabStorage(activity)
    ApexMediation.setConsent(
      tcString = state.tcfString,
      usPrivacy = state.usPrivacy,
      gdprApplies = state.gdprApplies
    )
  }

  override fun onConsentUpdateFailed(error: Throwable) {
    // Handle consent error
  }
})

// Option 2: Pass your own consent strings
ApexMediation.setConsent(
    tcString = "CPXxRfAPXxR...",  // IAB TCF v2.2
    usPrivacy = "1YNN",           // CCPA/CPRA
    gdprApplies = true
)

// Option 3: Read from CMP storage
val state = ConsentManager.fromIabStorage(context)
ApexMediation.setConsent(
    tcString = state.tcfString,
    usPrivacy = state.usPrivacy,
    gdprApplies = state.gdprApplies
)

// Consent signals are included in auction metadata and passed to adapters.
// Your app remains the consent source of truth.
1

Google UMP integration

One-liner to show the Google User Messaging Platform consent form. We handle the callbacks and propagate to all networks.

2

Direct consent strings

Pass TCF v2.2, US Privacy, or custom consent directly. Perfect for apps with existing CMP solutions.

3

Read IAB-standard consent storage (opt-in)

Use the SDK helper to read IAB-standard consent keys (TCF + US Privacy) from app storage, then pass them into the SDK. There is no background scraping.

Consistent signal plumbing

Set consent once. The SDK includes consent signals in auction metadata and makes them available to adapters. Partner behavior depends on each integration.

Live

Verifiable Revenue Auditor

Cross-reference network reports with SDK events and signed auction receipts. Detect discrepancies automatically. Generate dispute kits with confidence scores.

  • Ingest network statements via API, CSV, or SFTP
  • Auto-normalize and match against SDK events
  • Classify deltas: underpay, IVT, timing, FX
  • Monthly Proof-of-Revenue certificates
  • Export to BigQuery, S3, or GCS
VRA Pipeline
Network Reports ──┐
                   ├──▶ Normalizer ──▶ Matcher
SDK Paid Events ──┘         │            │
                            ▼            ▼
Crypto Receipts ────▶ Receipts Join ──▶ Reconciler
                                            │
                      ┌─────────────────────┤
                      ▼                     ▼
               Delta Classifier    Proof-of-Revenue
                      │
                      ▼
               Dispute Kit Builder
Migration Studio
┌──────────────────────────────────────────┐
│  Config v12 → Simulate → Canary → 100%   │
│                    │          │          │
│                    └─ rollback◀┘         │
└──────────────────────────────────────────┘

Shadow Mode:  Log without serving
Mirror Mode:  Test arm + production
Guardrails:   Latency, errors, eCPM
Kill Switch:  Instant revert
Live

Migration Studio

Switch mediators without risking revenue. Shadow test, mirror traffic, and validate eCPM parity before cutting over—with automatic rollback if guardrails trigger.

  • Shadow mode: log without affecting live serving
  • Mirror mode: run test arm alongside production
  • Guardrails: latency, error rate, and eCPM thresholds
  • Staged rollout: 5% → 25% → 100%
  • Kill-switch: instant revert to control
Core

Transparency Engine

Every auction produces a tamper-evident record. Bids received, waterfall order, floor prices, winner selection—all Ed25519-signed and exportable.

  • Immutable audit trail for every decision
  • Cryptographic proof of what actually ran
  • Export logs for third-party verification
  • On-device Debug Panel for real-time inspection
  • Dispute-ready evidence, not screenshots
Signed Auction Receipt
Auction #48291
├─ Timestamp:   2025-01-01T12:00:00Z
├─ Bids:        [A: $2.50, B: $2.45, C: $2.10]
├─ Winner:      Network A @ $2.50
├─ Floor:       $2.00
├─ Waterfall:   [A, B, C] (ML-optimized)
└─ Signature:   Ed25519:AbCd...1234 ✓

Verify:   canonical → verify → trust
Dispute:  cryptographic evidence
ML Waterfall Optimizer
┌─ Bid Prediction Model ─────────────────┐
│                                         │
│  Context: [geo, time, device, history]  │
│      │                                  │
│      ▼                                  │
│  Predict: P(bid > floor | network)      │
│      │                                  │
│      ▼                                  │
│  Rank: Reorder waterfall by expected    │
│        revenue × fill probability       │
└─────────────────────────────────────────┘

Training:   Continuous from your traffic
Shadow ML:  Test before activating
A/B Test:   Statistical significance
Live

ML Waterfall Optimizer

Our models predict bid responses and reorder waterfalls in real-time. Continuously learning from your traffic to maximize fill and eCPM.

  • Real-time bid prediction per network
  • Contextual ranking: geo, time, device, history
  • A/B testing with statistical significance
  • Shadow ML: test models before activation
  • Publisher-configurable optimization goals

Reliability infrastructure

Protections that keep your ads serving when things go wrong.

Circuit Breakers

Slow networks get isolated. One bad adapter never stalls your auction.

OTA-Safe Rollouts

Staged traffic routing with automatic rollback. Zero app updates needed.

Kill Switches

Disable any adapter instantly from the console. Take back control.

Debug Panel

On-device waterfall tracing. See exactly what happened and why.

Full-stack observability

Monitor every layer. From SDK to network response, see exactly what's happening—and set clear alert thresholds.

Prometheus + Grafana

24/7 monitoring with pre-built dashboards.

Structured Logs

PII-redacted, audit-ready, compliance-friendly.

Smart Alerts

Coverage drops and latency spikes surface quickly via metrics and alerting policies.

Request Tracing

SDK to network response. Debug in minutes.

example metrics
# VRA reconciliation
vra_coverage_ratio{network="admob"}  0.98
vra_delta_count{kind="underpay"}     3
vra_proof_verified_total             847

# Migration Studio
migration_ecpm_ratio{arm="test"}     1.02
migration_latency_p95_ms             45
migration_guardrail_triggers         0

# Auction health
rtb_auction_p99_ms                   38
rtb_fill_rate{placement="rewarded"}  0.94
rtb_errors{code="timeout"}           2

Debug Panel

A lightweight, on-device view of what the SDK did during an auction—useful for reproducing issues and sharing a sanitized trace with your team.

  • Waterfall order and per-adapter outcomes (shown/filled/timeout)
  • Latency breakdowns and time budget visibility
  • Consent and policy signals surfaced for debugging (no raw PII)
  • Export/share a sanitized trace bundle for support
  • Correlate traces with Prometheus/Grafana metrics

Native SDKs, native performance

Built for each platform. Privacy-first. Fully documented.

iOS

Swift
  • SwiftUI ready
  • Privacy Manifest
  • SKAdNetwork 4.0

Android

Kotlin
  • Jetpack Compose
  • Privacy Sandbox
  • Topics API

Web

TypeScript
  • Tree-shakeable
  • SSR compatible
  • TCF 2.2

Unity

C#
  • Cross-platform
  • Rewarded ads
  • Callbacks

See the features in action

Schedule a technical deep-dive. We'll walk through SDK integration, consent handling, VRA, and Migration Studio.