NewAdVision is live on the Elemental TV Ad ServerRead the announcement →
Elemental TVAdVision
Creative intelligence · AdVision · Live

Every creative, understood before it serves

AdVision watches the video and image creatives that reach the Elemental TV Ad Server and returns what a reviewer would: who the advertiser is, what the ad is about, which IAB and sensitive categories apply, whether it is safe for families, and what it says. Publishers see it in the Creative Library, filter and block on it and report on it. Platforms get the same analysis over one API call.

API endpoint
POST /analyze/creative
advision.elementaltv.io
Inputs
Video (MP4 and other common formats) and static images (JPEG, PNG, GIF), submitted by URL
Taxonomies
IAB Content Taxonomy tier 1–2 · Sensitive categories, 18 values, versioned

What publishers get

AdVision runs on the creatives your Ad Server receives from the demand sources you select — no setup per campaign

See

Every creative explained — advertiser name and domain, IAB categories, language, content type and whether several ads were stitched into one file, shown in the Creative Library next to the creative itself.
Safety flags — approved for families, acceptable quality, offensive content and unreasonable claims, per creative.
Filter the library — find creatives by AdVision metadata, advertiser domain, family approval, quality or stitched-ad status.
Report on it — AdVision top categories, sub-categories, taxonomy and advertiser domain are report dimensions in SSP and DSP reports.

Control

Allow / Block profiles — allow or block creatives on AdVision attributes at global, supply-source or ad-unit level; the Ad Server evaluates the profile before a creative serves.
Bid enrichment — outgoing bids carry AdVision's advertiser domain, advertiser, categories and language according to the attribute rules you set in Library Settings.
Your scope — choose which demand partners, supply sources and VAST systems participate.
Both delivery paths — the same metadata backs real-time bidding and server-side ad insertion.
Metadata informs; your rules decide. AdVision never blocks a creative on its own. What serves is decided by the Allow / Block profiles and attribute rules you configure — AdVision supplies the facts they run on.

How to get started

For publishers on the Elemental TV Ad Server — from first email to first analyzed creative
Ask for AdVision. Email support@elementaltv.com with your account and what you want to control; we enable AdVision on your account.
Choose the scope. In Creative Library → Library Settings pick the participating demand partners, supply sources and VAST systems, and which AdVision attributes go into bid responses.
Let it run. New creatives are analyzed as they arrive. Results appear in the Creative Library under View Metadata → AdVision; the tab shows processing, completed and failed states.
Set your rules. Add AdVision conditions to Allow / Block metadata profiles at global, supply-source or ad-unit level, and add AdVision dimensions to your reports.
What comes back for one creative — abridged
{ "creative_id": "your-id-123", "advertiser": "Example Outdoor Co.", "adomain": "example-outdoor.com", "adomain_confidence": 0.95, "categories": ["IAB17-15"], "language": "en", "sensitive_categories": [], "sensitive_categories_version": "0.1", "advision_approved_for_families": true, "acceptable_quality": true, "offensive_content": false, "unreasonable_claims": false, "split_ad": false, "duration": 30, "width": 1920, "height": 1080, "summary_text": "A golf-equipment retailer promotes a seasonal sale …", "transcription": "This weekend only, at Example Outdoor …", "secondary_brands": [ { "name": "…", "website_url": "…", "category": "…" } ] }

What AdVision returns

Fields on a completed analysis — the authoritative list is the 200 response of POST /analyze/creative (partner API v1.3)
FieldPresenceWhat it tells you
advertiseralwaysPrimary advertiser or brand.
adomain · adomain_confidencealwaysAdvertiser domain, and a 0.0–1.0 confidence in it. A domain you already know can be passed in and is preferred.
categoriesalwaysIAB Content Taxonomy codes, tier 2 where possible (e.g. IAB2-3).
sensitive_categories · sensitive_categories_versionalwaysZero or more of 18 exchange-agnostic values — alcohol, gambling, sports betting, lottery, tobacco, vaping, firearms, weapons, sexual and reproductive health, pharmaceuticals, supplements, nudity, pornography, cosmetic procedures, body modification, cannabis, CBD. An empty array means none detected. Versioned so the enum can grow without surprises.
advision_approved_for_familiesalwaysFamily-safe gate.
offensive_content · unreasonable_claims · acceptable_qualityalwaysOffensive or NSFW material; claims a reviewer would flag; overall quality flag.
split_adalwaysSeveral distinct ads stitched into one creative.
language · content_typealwaysLanguage of the creative (ISO 639-1) and content type, e.g. advertisement.
duration · width · heightalwaysDuration in seconds (0 for a still image) and pixel dimensions.
transcription · summary_textalwaysSpoken and on-screen text, and a short summary of the ad.
secondary_brandsalwaysOther brands that appear in the creative, each with website and category.
is_political · political{}when detectedPolitical inventory: advertiser type (candidate, PAC, party, issue advocacy), the issues raised and the sentiment.
is_coppa · kids_content_score · coppa{}when detectedChild-directed inventory: a 0.0–1.0 kids-content score, child-directed flag, data-collection, personalization and social-signup cues, and the rule results behind them.

Political and COPPA blocks are attached on the same call only when the creative qualifies — no extra requests, and ordinary creatives carry no empty blocks. They are signals for your own review and rules, not a legal certification. New fields may be added over time; ignore keys you do not know.

For platforms and partners

The same analysis over one API — submit a URL, repeat the call until it completes

What we do

Fetch the creative from your URL and analyze the whole video — or the image — in one pass.
Return one flat JSON record per creative with the fields above; political and COPPA enrichment attached when detected.
Keep the result keyed by your creative id — the same call returns the stored record; force: true re-analyzes from scratch.
Isolate your data per API key and, if you pass one, per tenant id — several businesses can share one integration.

What you send

Your API key in the X-API-Key header — issued once, store it in a secret manager.
POST /analyze/creative with your creative id and a publicly reachable media URL — video or JPEG / PNG / GIF.
The same POST again every 15–30 seconds until it returns 200. A 202 means downloading or queued; keep polling.
Optional: the advertiser domain you already know (adomain) and your tenant_id.
One call, repeated until done
POST https://advision.elementaltv.io/analyze/creative X-API-Key: asv_… Content-Type: application/json { "creative_id": "your-id-123", "media_files": [ { "url": "https://cdn.example.com/spot.mp4" } ] } 202 { "creative_id": "your-id-123", "status": "downloading" } → poll again 202 { "creative_id": "your-id-123", "status": "queued" } → poll again 200 { "advertiser": "…", "adomain": "…", "categories": [ … ], … } → done

Pipelines that always need the political or COPPA block can call the dedicated /analyze/creative/political and /analyze/creative/coppa endpoints instead; same key, same body, same polling. Write to support@elementaltv.com for a key.

What is next

Shipping on the AdVision API first, then in the Ad Server

AdVision's job is to turn a creative file into facts the Ad Server can act on. The analysis already returns more than the Creative Library exposes — political and child-directed signals, sensitive categories, the transcript and summary. The next releases close that gap and add the controls publishers have asked for.

What we are building next

Political and child-directed controls in the Creative Library — filters and Allow / Block conditions on political, COPPA-relevant, offensive-content and unreasonable-claims flags.
Sensitive-category controls — a Creative Library filter, Allow / Block conditions, and exact enforcement of exchange sensitive-category blocks on analyzed creatives.
Image and non-linear creatives in the Creative Library, analyzed through the same path as video.
Deep analysis for creative tooling — per-frame descriptions, timecodes and retrievable frames from one call.

Why it matters

Political and kids inventory need controls that IAB categories alone do not give — an explicit flag beats a category guess.
Exchange sensitive-category codes do not map cleanly to IAB. An exact per-creative signal closes the gap between a request's block list and what actually serves.
One analysis pass, reused everywhere — Creative Library, bid enrichment, server-side insertion, reporting — and the same record for partners.

Changelog

This page is kept current as AdVision evolves
All product updatesAnnouncements for every Elemental TV product live on updates.elementaltv.com.