---
title: "Video requirement presets"
description: "Keep the publisher video specs (Hulu, Roku, Netflix … and your own) that a site's video creative requirements are filled from — add one by hand or read it from a PDF, link or pasted text with Fill from document, push a corrected spec to every site that uses it, and retire one without losing the sites' requirements."
type: "howto"
audience: [admin]
keywords: [video requirement presets, publisher video spec, publisher spec, creative requirements, CTV spec, fill from document, spec PDF, read spec, apply to sites, differs from the spec, Hulu spec, Roku spec, Netflix spec, mezzanine, programmatic VAST, inactive spec]
ui_path: "Admin → Creatives & tags → Video requirement presets"
---

Fetch the complete documentation index at: https://epom.com/ad-server/docs/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Video requirement presets

A video requirement preset is a publisher's video spec — resolutions and bitrates, duration,
frame rate, container, codecs, audio, file size, loudness — kept once under **Admin → Creatives
& tags → Video requirement presets** so that a network manager fills a site's
[Video creative requirements](https://epom.com/ad-server/docs/guides/inventory/video-creative-requirements.md) card from it with
**Use a publisher spec** instead of typing thirty values. The network starts with the major
streaming publishers' published specs — Hulu, Disney+, Peacock / NBCUniversal, Amazon, Roku,
Paramount+, HBO Max, FOX, Netflix, Samsung Ads and the rest — and they are yours to correct,
duplicate, retire or delete, exactly like the specs you add.

**Example.** Roku revises its spec and now wants 1920×1080 at 15–30 Mbps where the preset said
10–20. You edit the *Roku* preset, change the bitrate row and **Save**; the 12 sites filled from
it now show **Differs from the spec**. **Apply to 12 sites** pushes the new values to all of
them in one go, their marks clear, and the ad servers check the next creative against the new
bitrate within seconds.

## Typical scenarios

| You want | Do | Where |
|---|---|---|
| A publisher's new spec in the list without typing it | **Add from document**, give it the PDF (up to 20 MB), the spec page link, or the pasted text, press **Read**, check, **Save** | List toolbar |
| One publisher's three delivery profiles as three specs | **Add from document** on a PDF that describes them, tick the profiles; each **Save** stores one (*Profile 2 of 3*) | List toolbar |
| A spec that differs a little from a shipped one | Tick the shipped row → **Duplicate** → edit the copy "… (copy)" | List toolbar |
| A corrected spec on every site that uses it | Edit, **Save**, then **Apply to N sites** | Edit form or list toolbar |
| A spec nobody should pick any more, without touching its sites | Untick **Active**; the sites keep their requirements and still name it *(Inactive)* | Edit form |

## Step by step

1. Open **Admin → Creatives & tags → Video requirement presets**. The grid shows each spec's
   name and profile, its requirements, its source page, the date it was checked, its **Status**
   (Active or Inactive) and **Sites** — how many sites were filled from it. **Show active** hides
   the inactive ones.

   ![Video requirement presets grid with the shipped publisher specs, their status and how many sites use each](https://epom.com/docs-images/ad-server/video-requirement-presets/presets-grid.webp)

2. Click **Add** and fill in **Name**, **Profile**, **Source**, **Checked on**, **Notes** and at
   least one **Requirements** row (see [Reference](#reference)) — or let the document do it:
   press **Fill from document**, give the spec as a **File**, a **Link** or pasted **Text**, and
   press **Read**. The form fills; *Where each value comes from* quotes the passage behind each
   value and *Read but not filled* lists what a spec cannot hold. Nothing is saved yet — check the
   values.

   ![Video requirement preset editor filled from a document: the Filled from note, the requirement rows and the quotes behind each value](https://epom.com/docs-images/ad-server/video-requirement-presets/fill-from-document.webp)

3. **Save**. A value the server refuses is named under the field or the requirement row it
   belongs to. The spec is now offered under **Use a publisher spec** on every site's video
   requirements card.
4. When a spec changes, edit it, **Save**, then click **Apply to N sites** (in the edit form, or in
   the toolbar for the ticked row). It asks first, naming how many sites it replaces, and reports
   how many were updated.
5. To duplicate a spec, tick its row and click **Duplicate**: a copy named "… (copy)" opens for
   editing. To retire one, untick **Active**; to delete one, tick it and click **Delete** — it
   warns first when sites were filled from it.

## Caveats and exceptions

- **Who can do this.** An admin role with the **Video Requirement Presets** Admin UI permission;
  release 153 gives it to every role that holds *Custom Ad Units & Sizes*. Network managers with
  the *Video Creative Requirements* permission do not manage presets but read the list — it is
  what **Use a publisher spec** offers them.
- **A site keeps its own copy.** Saving a preset changes no site: the sites filled from it show
  **Differs from the spec** until the spec is applied to them again. The edit form says how many
  sites that is. The ad servers never read this list — only the sites' requirements.
- **Apply to N sites pushes the saved spec.** It is offered while at least one of the sites
  filled from the spec no longer matches it; in the edit form it is greyed out while the form
  holds unsaved changes — **Save** first, then apply. Each site gets what **Use a publisher
  spec** would give it — including over changes made on the site itself — and keeps its on/off
  switch. It reaches every site filled from the spec, whichever account owns it: the specs are an
  admin-panel tool, so it does not ask for access to each site the way applying the spec on a
  site does. The sites' **Differs from the spec** marks clear, and the ad servers pick up the new
  requirements within seconds.
- **Inactive, not gone.** An inactive spec stays in this list, editable, and can be ticked again;
  sites already filled from it keep their requirements, are still checked against them and still
  name it (marked *Inactive*), and **Apply to N sites** still works for them. A new spec and a
  duplicate start active.
- **Deleting a spec that sites were filled from** asks first, naming how many. Confirmed, the
  spec is deleted and those sites **keep their requirements** and are still checked against
  them; they only stop naming the spec they came from. A spec the network started with does not
  come back once deleted.
- **The list is per network.** An edit to one of the specs the network started with is yours
  alone; it does not reach other networks.
- **Fill from document reads once and saves nothing.** An AI model reads the document and fills
  the requirements, the publisher's name on a new spec (an existing one keeps its name), the
  profile, the date the document carries, the link it was read from as **Source**, and **Notes**
  for what the requirements cannot express. A document that describes several delivery profiles
  (site-served and VAST, mezzanine and programmatic) asks which one to fill; up to 10 are
  offered, and a document with more says how many it has. To make a spec of each profile, use
  **Add from document** on the list instead: tick the profiles you want and the form opens
  filled with the first; each **Save** stores it as a new spec and fills the form with the next,
  without reading the document again (*Profile 2 of 3* above the requirements says where you
  are; **Cancel** drops the rest). *Read but not filled* lists what the model answered that a
  spec cannot hold — a codec outside the list, a frame rate of 0 — with the reason, in your
  language; those you set by hand or put in **Notes**.
- **Fill from document costs AI budget.** The button needs an Anthropic API key — your own, your
  network's or the platform's (see [AI assistant](https://epom.com/ad-server/docs/guides/collaboration/ai-assistant.md)) — and is not
  shown without one; each reading is billed like an AI assistant reply and counts against the
  same monthly allowance, and the button is greyed out once that is spent. A document the model
  declines to read, or one too long for one answer, is billed all the same.
- **Document limits.** A **File** is a PDF up to 20 MB, a PNG, JPEG, GIF or WEBP image up to
  5 MB (a screenshot of a spec table works), or a text or HTML file up to 2 MB; a **Link** is
  downloaded up to 2 MB, from the public internet only — an internal address is refused.

## Not working?

| Symptom | Likely cause | Check |
|---|---|---|
| The page is missing, or the URL shows *Record not found.* | Your admin role lacks **Video Requirement Presets** | [Users and roles](https://epom.com/ad-server/docs/guides/admin/users-and-roles.md) |
| A site editor does not see the spec under **Use a publisher spec** | The spec is **Inactive** | Edit → **Active** |
| Sites show **Differs from the spec** after you saved it | Expected — a site keeps its own copy | **Apply to N sites** |
| **Apply to N sites** is greyed out in the edit form | Unsaved changes in the form, or no site differs | **Save** first |
| **Fill from document** is not shown | No Anthropic API key on your user, network or the platform | [AI assistant](https://epom.com/ad-server/docs/guides/collaboration/ai-assistant.md) |
| **Fill from document** is greyed out | The monthly AI allowance is spent | AI assistant limits |
| "Too little readable text" from a link | The page builds its content in the browser, so the downloaded page is empty | Save the page as a PDF, or paste its text under **Text** |
| The link is refused | It points at an internal address, or the page is over 2 MB | Use the public URL or the PDF |
| The reading says the spec is too long | The model reads a document in one answer | Send only the pages with the video ad requirements, or paste that part |
| A value you expected is missing after **Read** | It is under *Read but not filled* — a codec outside the list, a frame rate of 0 | Set it by hand, or note it under **Notes** |
| **Save** is refused | The message under the field or the requirement row says which value | Fix that row; at least one requirement row is needed |

## Reference

| Field | What it does |
|---|---|
| **Name** | The publisher, as the site card lists it. Required; up to 128 characters. |
| **Profile** | Which of the publisher's delivery profiles this is, when it has several (*Mezzanine*, *Programmatic / VAST*). Shown beside the name. |
| **Id** | How the API and `apply-preset` name the spec — lower-case letters, digits and hyphens. Set it when you add a spec, or leave it empty to have it made from the name and profile; it never changes afterwards. |
| **Source** | The publisher's spec page the values come from (`http://` or `https://`). |
| **Checked on** | The date on the spec, or the day you checked it — `YYYY-MM-DD`, or `YYYY-MM` when the spec gives only a month. The site card shows it with the spec's name. |
| **Notes** | What the spec says that the requirements cannot check, and what was left out because of it. |
| **Active** | Whether site editors are offered the spec under **Use a publisher spec**. On for a new spec and for a duplicate. |
| **Requirements** | The same rows as on the site card — resolutions with their bitrate ranges, duration, video bitrate, frame rate, container, codecs, audio, file size and loudness; see [Options and fields](https://epom.com/ad-server/docs/guides/inventory/video-creative-requirements.md#options-and-fields). At least one. |

| Permission | Lets you |
|---|---|
| **Video Requirement Presets** (Admin UI) | Open the page; add, edit, duplicate, apply, deactivate and delete specs; read documents with Fill from document. |
| *Video Creative Requirements* (account side) | Read the active specs under **Use a publisher spec** on a site. |

### Over the API

`GET /rest-api/video-requirements/presets.do` lists the specs (`total`, `more`, and `usedBy` per
spec), `GET …/presets/{presetId}.do` reads one with every field and the sites filled from it,
`POST …/presets.do` adds one and `POST …/presets/{presetId}.do` changes only the fields sent (a
sent `requirements` replaces the whole spec). `POST …/presets/{presetId}/copy.do` duplicates one,
and `POST …/presets/{presetId}/delete.do` deletes one — refused with `409` and `usedBy` while
sites were filled from it, unless `force=true`. `POST …/presets/{presetId}/apply-to-sites.do`
re-applies one to every site filled from it and answers `updated`, the `sites` changed and
`notUpdated` (each site left as it was, with the reason); the list rows carry `sitesDiffering`,
how many of a spec's sites no longer match it. Every preset carries `active`;
`GET …/presets.do?active=true` is the list sites pick from, and `{"active": false}` on the update
deactivates a preset (an inactive one can still be applied by id). Invalid values come back per
field in `errors`.

`POST /rest-api/video-requirements/preset-from-document.do` reads a spec document — exactly one
of `file` (multipart), `url` or `text` — and answers `profiles` (at most 10; `total` is how many
the document has and `more` whether some were left out), each with the fields `presets.do`
accepts plus `quotes` and `notApplied`; it saves nothing. `GET` on the same path answers
`available` (and `reason`: `no_key` or `limit`) with the size limits (`maxPdfMb`, `maxImageMb`,
`maxPageMb`, `maxTextLength`); a file over the largest of them is refused before it is read.

Every change needs the *Video Requirement Presets* admin permission; an AI assistant connected
over MCP finds these through `api_search` ("publisher spec", "video spec", "push spec to all
sites", "fill a preset from a pdf") and `whoami` reports `may.videoRequirementPresets`.

## Related

- [Video creative requirements](https://epom.com/ad-server/docs/guides/inventory/video-creative-requirements.md) — the site card the specs fill
- [Other admin tools](https://epom.com/ad-server/docs/guides/admin/admin-tools.md) — the other small admin pages
- [Upstream macro presets](https://epom.com/ad-server/docs/guides/admin/upstream-macro-presets.md) — the other Fill-from-document tool
- [AI assistant](https://epom.com/ad-server/docs/guides/collaboration/ai-assistant.md) — the key and allowance Fill from document uses