Domain allowlist per share
Restrict an embed to a specific list of domains. Anyone trying to embed it elsewhere gets a blocked iframe, enforced by the browser via CSP frame-ancestors.

Developers · Video embeds
Generate an embed snippet for any video asset in two clicks. Restrict playback to your own domains, control autoplay, loop, captions, and start time, and revoke the embed any time without touching the asset.
The embed is a normal iframe. It loads a signed playback URL, plays an HLS stream sized for the viewer, and inherits the permissions the browser already grants iframes.
Generate it interactively from the asset page, or programmatically by creating a share through the API and asking for an embed snippet.
Generated snippet
<iframe
src="https://{workspace}.freedam.io/share/SHARE_TOKEN/embed/ASSET_GAID?autoplay=1"
width="640"
height="360"
frameborder="0"
allow="autoplay; encrypted-media; picture-in-picture"
allowfullscreen
></iframe>Pick a preset for the common cases or enter your own width and height for bespoke layouts.
Small
480 × 270
Medium
640 × 360
Large
854 × 480
Custom
Your dimensions
Append the parameters you want. Defaults are sensible: controls on, autoplay off, loop off.
autoplayStart playback as soon as the iframe loads. Forces muted, since browsers block unmuted autoplay.mutedStart muted, but let the viewer un-mute.loopRestart from the top when the video reaches the end.controlsShow the player controls. On by default; pass controls=0 to hide.startBegin playback at a specific second. Useful for highlighting a moment inside a longer clip.Example: link to second 42 of a longer clip.
https://{workspace}.freedam.io/share/SHARE_TOKEN/embed/ASSET_GAID?start=42Each embed carries a list of domains where it can play. Set it per share, or set a tenant-wide default that every embed inherits. Nothing prevents copy-pasting the snippet, but the moment it lands on a site that is not on the list, the browser refuses to render it.
The mechanism is the standard Content-Security-Policy: frame-ancestors header. Every browser respects it. There is no script you have to add, no integration to maintain.
Precedence
The first match wins.
Per-share allowlist
Set on the share that backs the embed. Highest priority.
Tenant default allowlist
Set once in tenant settings. Inherited by every embed without an override.
No restriction
If neither is set, the embed plays anywhere. Fine for public content, intentional for everything else.
Six things you don't have to build yourself.
Restrict an embed to a specific list of domains. Anyone trying to embed it elsewhere gets a blocked iframe, enforced by the browser via CSP frame-ancestors.
Set one domain allowlist for the whole library. Every embed inherits it unless a share overrides it.
Each embed is backed by a share that lasts a year and renews automatically when it’s within thirty days of expiring.
The iframe loads a signed URL. You can revoke a single embed without touching the underlying asset.
Playback uses HLS, so the right resolution is served for the viewer’s connection without you tuning anything.
The iframe is configured with the right permissions for autoplay, encrypted media, picture-in-picture, and fullscreen, on every browser that supports them.
Developers · Video embeds
Take the demo for a spin and generate an embed snippet for one of the sample videos.