Creative Specs

Praevis accepts video (VAST), banner, and native ad formats. All creatives must be served over HTTPS and comply with the quality requirements below.


Multiple Creatives per Campaign

Upload multiple creatives per campaign with weighted rotation for A/B/C testing. Test different creative variants within a single campaign without managing separate campaigns.

Campaign Setup

Campaigns support both single creative and multiple creative configurations. Use the Campaign API to configure creative rotation:

Single Creative

{
  "campaign_id": "summer-promo-2026",
  "campaign_name": "Summer Promo",
  "targeting": {
    "countries": ["ARE", "SAU"],
    "devices": ["ctv"]
  },
  "bidding": {
    "base_cpm": 2.50,
    "max_cpm": 5.00
  },
  "budget": {
    "daily_cents": 50000,
    "total_cents": 1500000
  },
  "creative": {
    "vast_url": "https://cdn.example.com/hero.xml",
    "impression_trackers": ["https://tracker.example.com/imp?creative=hero"],
    "creative_id": "hero-1"
  }
}

Multiple Creatives with Weighted Rotation

{
  "campaign_id": "summer-promo-abc-test",
  "campaign_name": "Summer Promo - A/B/C Test",
  "targeting": {
    "countries": ["ARE", "SAU"],
    "devices": ["ctv"]
  },
  "bidding": {
    "base_cpm": 2.50,
    "max_cpm": 5.00
  },
  "budget": {
    "daily_cents": 50000,
    "total_cents": 1500000
  },
  "creatives": [
    {
      "creative_id": "hero-variant",
      "vast_url": "https://cdn.example.com/hero.xml",
      "impression_trackers": ["https://tracker.example.com/imp?creative=hero"],
      "weight": 50
    },
    {
      "creative_id": "family-variant",
      "vast_url": "https://cdn.example.com/family.xml",
      "impression_trackers": ["https://tracker.example.com/imp?creative=family"],
      "weight": 30
    },
    {
      "creative_id": "adventure-variant",
      "vast_url": "https://cdn.example.com/adventure.xml",
      "impression_trackers": ["https://tracker.example.com/imp?creative=adventure"],
      "weight": 20
    }
  ],
  "rotation_strategy": "weighted"
}

Rotation Strategies

StrategyBehavior
weighted (default)Distributes impressions based on weight values (50%, 30%, 20% in example above)
round_robinEqual rotation across all creatives (ignores weights)
randomUniform random selection (ignores weights)

Weight Distribution

  • Weights are relative values (don’t need to sum to 100)
  • If no weights provided, creatives are distributed equally
  • Weights are auto-normalized internally

Examples:

// 50%, 30%, 20% distribution
"weights": [50, 30, 20]
 
// Same as above - auto-normalized
"weights": [5, 3, 2]
 
// Equal distribution - weights ignored
"rotation_strategy": "round_robin"

Validation Rules

🚫

XOR Validation: Campaign must use either creative (single) OR creatives (array) — not both, not neither.

// ❌ INVALID - Both fields provided
{
  "creative": {...},
  "creatives": [...]
}
 
// ❌ INVALID - Neither field provided
{
  "targeting": {...}
}
 
// ✅ VALID - Single creative
{
  "creative": {...}
}
 
// ✅ VALID - Multiple creatives
{
  "creatives": [...]
}

Testing Your Creatives

Use impression_trackers to monitor which creative variant is served:

{
  "creative_id": "hero-variant",
  "impression_trackers": [
    "https://tracker.example.com/imp?campaign=summer&creative=hero"
  ]
}

Praevis fires impression trackers when the creative is served, allowing you to track performance per variant.

Creative Performance

Track creative rotation distribution via your impression trackers. Compare:

  • Win rate per creative_id
  • Click-through rate per creative_id
  • Conversion rate per creative_id

Adjust weights based on performance data to optimize campaign results.

Tip: Start with equal weights (33%, 33%, 34%) for true A/B/C testing, then shift traffic toward better performers.


Video / VAST

VAST versions

VersionSupport
VAST 2.0✓
VAST 2.0 Wrapper✓
VAST 3.0✓
VAST 3.0 Wrapper✓
VAST 4.0✓
VAST 4.2✓
VPAID❌ Not supported

Video specs

ParameterRequirement
ContainerMP4
CodecH.264 (AVC) — H.265 accepted on CTV
Audio codecAAC
Bitrate500–8,000 kbps (2,000+ recommended for CTV)
Resolution1920×1080 (CTV), 1280×720, 640×480
Frame rate24, 25, or 30 fps
Ad duration15s, 30s, 60s
Max file size50MB
HTTPS✓ Required

These specs are recommendations for best compatibility across publishers. Praevis does not hard-reject creatives outside these ranges — but publishers’ video players may. MP4 container and H.264 codec are strongly recommended. Other resolutions and durations will work but may have lower fill rates.

CTV-specific requirements

  • Min bitrate: 2,000 kbps (< 2,000 kbps may be rejected by CTV players)
  • Skip: Praevis publishers control skip settings — respect imp.video.skip in the bid request
  • MRAID: Not applicable on CTV
  • VPAID: Not supported — use VAST 4.x with <Verification> for viewability instead

Wrapper depth

Maximum VAST wrapper depth: 3 levels. Deeper chains may time out or be rejected by players.


Supported sizes

SizeFormatCommon use
320×50Mobile bannerMobile web / app
300×250Medium rectangleWeb + mobile
728×90LeaderboardDesktop web
970×250BillboardDesktop web, high impact
160×600Wide skyscraperDesktop web sidebar
300×600Half pageDesktop web sidebar
320×480Mobile interstitialMobile app
ParameterRequirement
FormatGIF, JPEG, PNG, HTML5
AnimationMax 15s, max 3 loops
File sizeMax 150KB initial load
HTTPS✓ Required
Click trackingPraevis wraps click URLs

Native (OpenRTB Native 1.2)

Required assets

AssetSpec
TitleMax 90 characters
Main imageMin 1200×627px, JPEG/PNG, <500KB
Icon imageMin 80×80px
Body textMax 90 characters
CTA textMax 15 characters
Sponsored label”Sponsored” or brand name

Optional assets

  • Rating (1–5 stars)
  • Price
  • Downloads count

MRAID

MRAID 3.0 is supported for mobile interstitials and rich media. Use only in imp.banner context where imp.banner.api includes 5 (MRAID 3.0).

Not applicable on CTV.


Blocked ad categories

The following categories are not accepted on the Praevis network:

CategoryStatus
Adult / explicit content❌ Blocked
Gambling (unlicensed)❌ Blocked
Malware / deceptive installs❌ Blocked
Auto-play audio❌ Blocked
Firearms (direct sale)❌ Blocked
Counterfeit goods❌ Blocked
Political ads (without disclosure)❌ Blocked
Crypto / NFT (unregulated)❌ Blocked

Publishers may also have category block lists — these are applied per publisher before the auction.


Audio

Audio specs

ParameterRequirement
FormatMP3, AAC, OGG, M4A
Bitrate128 kbps minimum
Sample rate44.1 kHz or 48 kHz
Duration15s, 30s, 60s
Max file size5 MB
HTTPS✓ Required

Audio companion

Audio campaigns can include a companion banner (300x250 recommended) displayed alongside the audio player.


Automated Creative Validation

Praevis automatically validates all creatives when you create or update a campaign. Validation is non-blocking — warnings are returned in the API response but creatives still serve.

What we check

FormatChecksWarning codes
VideoMP4 container, H.264/H.265 codec, AAC audio required, file sizeunsupported_container, unsupported_video_codec, no_audio_track, unsupported_audio_codec, large_file
BannerFile size (max 150 KB), dimensions match IAB standard sizesbanner_oversized, non_standard_size:WxH
AudioFile size (max 5 MB), codec detection, reject uncompressedaudio_oversized, unsupported_audio_format, uncompressed_audio
HTML5File size (max 2 MB)html5_oversized

Example API response with warnings

{
  "id": "campaign-123",
  "status": "active",
  "creative_warnings": [
    { "creative_id": "hero-1", "warning": "no_audio_track" },
    { "creative_id": "banner-1", "warning": "non_standard_size:300x251" }
  ]
}

SSAI note: For CTV/SSAI delivery via Broadpeak, video creatives must have an AAC audio track — even if silent. Creatives without audio will show the no_audio_track warning and may fail transcoding.

Creative CDN

All creatives are automatically cached to the Praevis CDN (courier.praevis.com) at 330+ edge locations. DSP origin URLs are never exposed to SSAI platforms or publishers.

  • VAST wrappers are unwrapped and the underlying media file is cached
  • Cached creatives serve from the nearest edge location
  • CDN URLs are stable (content-addressed hashing)

Creative quality standards

Creatives must:

  • Load within 1.5s on a standard connection
  • Not redirect through more than 3 domains
  • Not auto-play audio without user interaction (web)
  • Not expand beyond declared dimensions
  • Not trigger unexpected downloads
  • Not use deceptive click patterns
⚠️

Creatives that fail quality checks are blocked platform-wide. Demand sources (DSPs) with repeated violations may have their account reviewed.


Reporting creative performance

View creative-level stats via the API:

GET /api/demand/sources/{DSP_ID}/stats?period=7d&breakdown=creative

Returns win rate, impressions, and eCPM per creative ID (crid from your bid response).