Browse the help center

Check video creatives against a publisher's spec

Record a publisher's video spec on its site — resolution with bitrate, duration, frame rate, codecs, audio, loudness — so a video file that misses it is not served there, and see which linked creatives miss it and why.

How-to network manager admin Account → Publishers → site → Video creative requirements

CTV publishers reject a spot that is a fraction of a megabit or a few frames off their spec. Record each publisher’s spec once on its site, and Epom checks every video file linked to that site’s placements against it: a file that misses it stays linked but is not served there, and every place the creative is linked says why.

Who this is for

Network managers and publishers who sell CTV or OTT inventory with a published video spec. The card appears only for roles with the Video Creative Requirements permission — if it is missing, ask your network admin to turn it on. Networks without CTV see nothing new. Read-only access shows the spec without letting you change it.

Prerequisites

  • A site for the publisher, with its video placements.
  • Video creatives uploaded to Epom (Local Video or Advanced Local Video(s)). External video URLs, third-party VAST tags and DSP bids have no file in Epom and are never checked.

Steps

  1. Open the site and switch on Video creative requirements — on the card or in the Features list beside it. The card stays closed while the switch is off, and nothing is checked. Video creative requirements card with resolution, duration, frame rate, codec, audio and loudness rows

  2. If the publisher is one of the major streaming services, click Use a publisher spec and pick it — the form fills in with that publisher’s published spec (see the list below), which you then check against the spec the publisher sent you. Otherwise click Add requirement and pick each criterion the publisher’s spec names; add only those. A new row starts from the most common CTV value, which you then adjust.

  3. Click Save. The ad servers apply the spec within seconds.

    Switching the card off stops the check but keeps the spec, so switching it back on applies the same requirements again.

  4. Check what is linked. On each of the site’s video placements, Linked banners warns how many linked creatives miss the spec and marks each of them Not served; hover the mark for the reasons. A creative not yet linked is marked too, and ticking one shows a warning above Save, so you know before linking it that it will not be served. Creatives tree of a video placement with an off-spec creative marked

  5. On the creative, Linked placements does the same from the other side: it warns on how many linked placements the file is not served and marks each of them. Video info lists what was read from the file — resolution, duration, video bitrate, frame rate and whether it is constant, video codec, container, audio codec, audio bitrate, channels and sample rate, loudness and file size — and, for each linked site whose requirements are switched on, whether it is served there. Video info of a creative with its file facts and a failing site verdict

While the switch is on, the video placement’s VAST configuration shows the site’s spec in one line under Publisher video requirements, with a link back to the site.

Options and fields

Video stream:

RequirementWhat you setPasses when
ResolutionExact sizes: one or more width × height, each with an optional bitrate range in Mbps. At least: a minimum width × height, for specs that say “1920x1080 minimum”Exact sizes: the file’s size is in the list, and a range on that size then replaces Video bitrate. At least: the file is at least that wide and that high
DurationFixed lengths in seconds with a tolerance (0.5 s by default), or a Range from–toThe file is within the tolerance of one of the lengths, or inside the range
Video bitrateMinimum and/or maximum in Mbps, and Not for ProRes filesThe video stream’s bitrate is in range. With Not for ProRes files, a ProRes file is not checked against this range or a resolution’s range
Frame rateAccepted rates (23.976, 24, 25, 29.97, 30, 50, 59.94, 60) and Constant frame rate only (on by default)The rate is one of them and does not vary through the file
ContainerMP4, MOV, WEBMThe file is one of them
Video codecH.264, HEVC (H.265), ProRes, VP9, AV1, MPEG-2The video stream uses one of them

Audio and file:

RequirementWhat you setPasses when
Audio codecAAC, PCM, AC-3, E-AC-3, MP3, OpusThe audio stream uses one of them
Audio bitrateAt least … kbpsThe audio stream’s bitrate is at least that
Audio channelsMono, Stereo, 5.1The audio has exactly that many channels
File sizeAt most … MBThe file is no larger
LoudnessTarget and tolerance in LKFS (−24 ± 2 by default)Integrated loudness (ITU-R BS.1770) is within the tolerance

A file with no audio fails every audio requirement that is set.

Not for ProRes files. ProRes is the near-lossless master (the mezzanine) publishers transcode from; it runs at 150–220 Mbps. Specs that accept both give their bitrate range for the compressed H.264 file only, so a ProRes file would fail a 10–40 Mbps range it was never meant for. Leave this on whenever the publisher’s spec accepts ProRes.

Publisher specs

Use a publisher spec fills the form from a major streaming publisher’s published video ad spec: Hulu, Disney+, Disney programmatic, ABC / Freeform, Peacock / NBCUniversal (standard and programmatic), Amazon Prime Video, Amazon Fire TV Channels, Roku, Paramount+, HBO Max / discovery+ (international), FOX, Netflix (ProRes and H.264) and Samsung Ads. Each was taken from the publisher’s own spec page; the note above the form says which spec and as of when. Picking one over requirements already on the card asks Replace the requirements? first. A requirement the publisher does not state is left out, never guessed. Publishers revise their specs, and the spec a publisher sends you wins — check the filled form against it before you click Save.

Once saved, the card names the spec it was filled from — Based on a publisher spec: Hulu · …, as of … — and marks it Edited if you have changed it since; the video placement’s Publisher video requirements line names it too. Removing every requirement removes the reference with them.

How it works

  • The facts come from the file. Every uploaded video is read on upload: resolution, duration, video bitrate, frame rate and whether it is constant, codecs, container, audio bitrate, channels and sample rate, file size, and integrated loudness.
  • Advanced Local Video(s) are judged by their best file — the highest bitrate, then the widest — which is the one Epom gives SSAI stitchers to transcode from (the mezzanine).
  • Linking is never refused. A creative that misses the spec can be linked; it is simply not served on that site’s placements, and the next eligible creative wins the impression instead.
  • The check runs in the ad server’s memory, so a spec costs no request time.

Corner cases and gotchas

Corner case: files uploaded before this check was introduced. They were read only for size, bitrate, duration and type. Until Epom re-reads them in the background (gradually, for sites whose check is switched on) — a frame rate, codec, audio or loudness requirement counts as not yet checked for them and does not stop them. Why: a creative is not blocked for a fact nobody has read yet. Workaround: re-upload the file to have it read at once.

  • Older Advanced Local Video(s) files are not re-read; re-upload them for frame rate, codecs, audio and loudness to be checked.
  • Frame rates are matched to the standard values, so a spec’s “23.98” matches a 23.976 file, but 29.97 and 30 are different rates.
  • Switched on with no requirement added, the card checks nothing; the site’s creatives are served as before.

Over the API

  • GET / POST /rest-api/sites/{siteId}/video-requirements.do — read or replace the spec as JSON ({} clears it); invalid values come back per field in errors. The answer carries enabled.
  • POST /rest-api/sites/{siteId}/video-requirements/enable.do and …/disable.do — switch the check on or off; the spec is kept either way.
  • GET /rest-api/video-requirements/presets.do — the publisher specs, each with its source page and date; POST /rest-api/sites/{siteId}/video-requirements/apply-preset.do?presetId=hulu sets one on a site. An AI assistant asked to “make it like Hulu’s” finds both through api_search.
  • GET /rest-api/banner/{bannerId}/video-compliance.do — the file’s facts and its verdict for each linked site that has a spec.
  • GET /rest-api/placements/{placementId}/video-compliance.do — the placement’s linked video creatives with their verdicts, and notServed, how many of them are not served there.
  • An AI assistant connected over MCP reaches both through api_read / api_write; whoami reports may.videoRequirements.

See the Sites and Banners API reference.

Per-role notes

  • Video Creative Requirements read-only: the card shows Read-only in place of the switch; the spec and the verdicts are visible, but Add requirement and Save are not.
  • Masked inventory or advertisers: the verdict is still shown, but a site or creative the role may not see is named by its id only (SITE_12, BANNER_34) and is not a link — as in the link grids.
  • Without the permission: no card, no column, no marks, no warning — creatives are still not served where they miss a spec someone else set.

Related pages

Please disable Adblock
Are you using adblock? Disable it and reload the page to proceed to the destination page.

A registration has already been submitted from this page. Please try again in 10 minutes.