SporfieSporfie
Pricing
Contact
SporfieSporfie

The complete video platform for sports.

  • Facebook
  • Instagram
  • X
  • YouTube

Platform

  • Features
  • Pricing
  • Shop
  • Blog
  • API

Legal

  • Terms of Use
  • Privacy Policy
  • Community Guidelines

Get in touch

  • +1 480 584 0197
  • contact@sporfie.com
  • Contact
  • Service Status
  • Support

© 2026 Sporfie. All rights reserved.

Documentation
Embed
v1
  • Configuration
  • Timestamp API
v3beta
  • Configuration
Sporfie API documentation
Beta

Embed player v3

Configure the v3 embed player, preview it live, and read the current query-parameter reference in one place.

Configuration

Toggle the supported v3 embed options, inspect the generated URL, and validate the live preview before shipping it.

Event access
Event key*The unique identifier of the event you want to embed.
Feature toggles
Playback
UI
Embed URL
Missing event key
Embed snippet
<!-- Missing event key -->
Live preview
Enter an event key to load the live preview.

The V3 embed serves the new Sporfie player inside an <iframe>. Since 29 October 2026 it serves every embed URL:

  • /v3/embed/:eventKey — the documented v3 form, described on this page. /v2/embed/:eventKey, /event/:eventKey/v3/embed and /event/:eventKey/v2/embed are aliases with the same defaults.
  • /embed/:eventKey and /event/:eventKey/embed — the v1 (classic) form, which partner iframes have carried since before the new player. They keep the classic defaults, so no existing snippet changes behaviour (see v1 URLs).

The classic (video.js) embed lives on /event/:eventKey/embed/classic until it retires at the end of 2026; a playback error in the v3 embed offers that switch inside the iframe. The viewer's player cookie never changes what a partner's iframe renders: every embed URL keeps serving v3 even for viewers who chose the classic player, because the classic embed cannot play Pay Per View events, even for viewers who bought access.

URL format

code
https://www.sporfie.com/v3/embed/<eventKey>?<options>

/v3/embed/:eventKey is the documented form. It is rewritten internally to /event/:eventKey/embed; /event/:eventKey/v3/embed also works if you prefer the explicit route.

Basic snippet:

html
<iframe  src="https://www.sporfie.com/v3/embed/-Oab1cD2eF"  width="960"  height="540"  frameborder="0"  allow="autoplay; fullscreen; picture-in-picture"  allowfullscreen></iframe>

Responsive snippet (16:9, no fixed height):

html
<div style="position: relative; aspect-ratio: 16 / 9">  <iframe    src="https://www.sporfie.com/v3/embed/-Oab1cD2eF"    style="position: absolute; inset: 0; width: 100%; height: 100%; border: 0"    allow="autoplay; fullscreen; picture-in-picture"    allowfullscreen  ></iframe></div>

Framing allow-list

Embed responses carry a Content-Security-Policy: frame-ancestors … header built from the domains configured for the organization. If your domain is not on the list, the browser refuses to render the iframe. Ask Sporfie support to add it (or add it yourself under Admin → Events → Embedded player).

Options

Only pass the options you want to change — every one has a default, and omitted parameters use it. Unknown parameters are ignored, so an option added later can never break an existing embed.

Booleans accept true / 1 / an empty value for on, and false / 0 for off.

Access

| Parameter | Type | Default | Description | | --- | --- | --- | --- | | pin | string | — | PIN for a PIN-protected event. | | device | string | — | Pin playback to one camera (device id). Hides the camera picker. | | t | number (seconds) | — | Open the player at this position on the event timeline. | | item | string | — | Open a clip (clip key), the highlights reel (highlights) or a recording (media file key) on load. A clip fills the whole player, without the clip actions (download, share, zoom) beside it. |

Features

| Parameter | Type | Default | Description | | --- | --- | --- | --- | | multiAngle | boolean | false | Offer the camera picker and the multi-camera layouts. | | view | single \| split \| pip | single | Layout multi-camera events open with. Requires multiAngle=true and no device. Picture-in-picture opens in the corner the organization chose. | | scoreboard | boolean | true | Show the live scoreboard when the event has one. | | sponsorAssets | boolean | true | Show sponsor logos and overlays. | | ads | boolean | true | Play sponsor ad breaks. | | chat | boolean | false | Show the live chat panel. | | filmStrip | boolean | false | Show the moments film strip under the player. | | activityLog | boolean | false | Show the moments/activity panel. | | annotations | boolean | false | Show clipping, bookmarking and score buttons. | | settings | boolean | false | Show the settings menu. | | share | boolean | true | Offer share actions (link, embed code, video export) on clips, recordings and highlights. | | shortcuts | boolean | true | Handle keyboard shortcuts. |

Playback

| Parameter | Type | Default | Description | | --- | --- | --- | --- | | autoplay | boolean | false | Start playing on load. Browsers only allow this when muted=true. | | muted | boolean | false | Start muted. | | volume | number 0–1 | 1 | Initial volume. | | playbackRate | number | 1 | Initial playback speed. | | speed | list of numbers | — | Playback rates played in sequence, one per play-through: speed=1,0.5 plays once at normal speed, then replays in slow motion and stops. A single value sets a fixed rate. Applies to the event, clips and the highlights reel; takes precedence over playbackRate. | | loop | boolean | false | Restart when playback ends: a replay from its first footage (or the item recording from its start), a clip or the highlights reel from its start. With speed, it keeps replaying at the last rate. Live streams are not affected. | | quality | auto \| high \| medium \| low | auto | Initial quality preference. | | autoplayNextClip | boolean | true | Continue to the next clip in a highlights reel. |

Layout

| Parameter | Type | Default | Description | | --- | --- | --- | --- | | showTitlebar | boolean | true | Show the event name / Sporfie bar above the player. Organizations with a white-label agreement show their partner's logo there (Shark Replay) instead of Sporfie's. | | fullWidth | boolean | true | Fill the iframe instead of laying out a 16:9 card. | | autohideControls | number (seconds) | 5 | Idle delay before the controls hide. 0 keeps them visible. | | forceRelativeTime | boolean | false | Show times relative to the event start instead of clock time. | | nativeFullscreen | boolean | false | On iPhone, fullscreen opens the system video player, which covers the whole screen instead of only the iframe. Player controls and overlays are not shown there. Other platforms are unaffected. |

Migrating from V2

Swap /v2/embed/ for /v3/embed/ when you want the documented URL; both serve this player with the same defaults. The renamed options are accepted under their old names too:

| V2 parameter | V3 equivalent | | --- | --- | | contentSelector | filmStrip | | deviceSelector | multiAngle | | annotationButtons | annotations | | sideBySide=true | view=split | | pipPlayer=true | view=pip |

Dropped without a replacement (ignored if present): moments, bookmarks, scoreChanges, timeMarkers, zoomLevel, debugInfo, fullscreen.

v1 URLs

/embed/:eventKey and /event/:eventKey/embed accept every option above and keep the classic embed's defaults where they differ:

| Option | v1 default | | --- | --- | | scoreboard | The scope's embedded-player setting (Admin → Scopes), off when the scope sets none. | | multiAngle / view | On, in picture-in-picture: multi-camera events open with the other angles in the organization's corner (collapsed when the organization hides them). pip=false turns it off. | | device | The camera playback starts on; the other angles stay in picture-in-picture. With pip=false (or on a /v3/embed/ URL) it pins playback to that camera alone. | | item | A clip or the highlights reel plays alone: no advance to the next clip, and the player holds the last frame at its end (or restarts with loop). An explicit autoplayNextClip=true restores the v3 advance. A recording (media file key) opens the replay at its start. | | share | Off, as the classic embed had no share actions: partner sites share through their own platform. share=true turns them on. |

pip is the v1 name of multiAngle (pip=false = multiAngle=false). Moving a v1 snippet to /v3/embed/ switches it to the v3 defaults above.

Examples

bash
# Minimal, silent autoplay for a page hero/v3/embed/-Oab1cD2eF?autoplay=true&muted=true&showTitlebar=false# Multi-camera, side by side, with the film strip/v3/embed/-Oab1cD2eF?multiAngle=true&view=split&filmStrip=true# One fixed camera, starting 90 seconds in/v3/embed/-Oab1cD2eF?device=cam-1&t=90# A clip, then its slow-motion replay, on a loop/v3/embed/-Oab1cD2eF?item=<clipKey>&speed=1,0.5&loop=true&autoplay=true&muted=true# PIN-protected event, controls always visible/v3/embed/-Oab1cD2eF?pin=1234&autohideControls=0

Keyboard shortcuts

Active when shortcuts is on and the iframe has focus:

| Key | Action | | --- | --- | | Space / K | Play / pause | | ← / → | Seek 5 seconds | | J / L | Seek 10 seconds | | ↑ / ↓ | Volume | | M | Mute | | F | Fullscreen | | , / . | Frame step while paused | | P / N | Previous / next moment | | 0–9 | Seek to 0–90% | | Home / End | Seek to start / end | | ? | Shortcut reference |

Timestamp messaging

The postMessage timestamp API is identical across every embed URL — see EMBED_PLAYER_TIMESTAMP_MESSAGING.md. A listener written against the classic or v2 embed needs no changes: requests sent while the event is still loading get not-ready, and the timestamp advances through a clip (the clip's start plus the position in it).

Paid and protected events

  • **PIN-protected events** show the PIN prompt inside the player; passing pin skips it.
  • **Pay-per-view events** cannot complete checkout inside a cross-origin iframe, so the embed shows a locked panel with a link that opens the event page on Sporfie in a new tab.