VideoBB
Upload Premium Sign in

Developers: embed player, oEmbed and tus uploads

Technical reference for VideoBB: the iframe embed and its parameters, the oEmbed endpoint, tus resumable uploads, HLS playback and structured data.

You can build on VideoBB in four ways: embed the player with one iframe, turn watch links into players with oEmbed, upload files with any tus client, and read the VideoObject data on every watch page.

This page is the technical reference. For a step-by-step walk-through for site owners, read the embed guide instead.

Embed the player

Every video with embedding turned on can play on any website. You only need one iframe.

The embed code

<iframe src="https://videobb.com/embed/VIDEO_ID" width="640" height="360" frameborder="0"
  allow="autoplay; fullscreen; picture-in-picture" allowfullscreen loading="lazy" title="Video title"></iframe>

The video ID is the short code at the start of a watch URL, such as v7fs1pq. The Share button on each video gives you this code ready to copy.

Embed parameters

ParameterEffect
autoplay=1Starts playing on load. It also mutes the player, because browsers only allow muted autoplay.
muted=1Starts with the sound off.
loop=1Plays the video again when it ends.
t=90Starts at a time, given in seconds.

Join parameters with &, for example /embed/VIDEO_ID?autoplay=1&loop=1. Our guide to browser autoplay rules explains why sound must start muted.

When a video will not embed

  • The creator turned off Allow embedding for that video.
  • The video is private. Public and unlisted videos can be embedded.
  • The video is still processing, or it was removed.

In each case the iframe shows "This video is unavailable" instead of the player.

oEmbed

oEmbed is an open standard. It lets a CMS turn a pasted link into a player on its own.

The request

GET https://videobb.com/api/oembed?url=WATCH_URL

Every page also points to this endpoint with a <link rel="alternate" type="application/json+oembed"> tag, so tools can find it without setup.

The response

The answer is JSON (oEmbed version 1.0, type video). It includes these fields:

  • title, author_name and author_url for the video and its channel.
  • html: the iframe, sized 640 by 360.
  • thumbnail_url, with a width of 1280 and a height of 720.
  • provider_name and provider_url.

Only public videos with embedding on are returned. Any other link gets a 404.

Upload with tus

Uploads use the open tus resumable upload protocol, version 1.0.0. A tus client sends a file in pieces, so it can resume after a break.

Endpoint and extensions

The endpoint is /files. It supports the creation, termination and expiration extensions. Uploads run on your signed-in session, and VideoBB does not issue API keys. An unfinished upload can be resumed for 48 hours.

Metadata and limits

  • filename is required and must end in a supported type, such as .mp4, .mkv or .mov.
  • filetype and title are optional.
  • Files can be up to 4 GB. Free accounts get 10 uploads per 24 hours and Premium gets 100.
StatusMeaning
412The Tus-Resumable header is not 1.0.0
413The file is larger than 4 GB
415The file name has an unsupported extension
429The daily upload allowance is used up

The full list of file types is in supported formats and size limits.

Playback with HLS

Every video streams as HLS (RFC 8216). Segments are fragmented MP4, six seconds long, with H.264 video and AAC audio.

The master playlist

The playlist lives at /hls/VIDEO_ID/master.m3u8. It lists the quality levels the viewer may play: 144p to 1080p for everyone, and up to 2160p for Premium members.

Signed rendition links

Each quality level has a signed link that expires after six hours. Do not store these links. Fetch the master playlist again when you need fresh ones. See what HLS streaming is for how playlists and segments fit together.

Structured data and sitemaps

Watch pages carry VideoObject JSON-LD with the embed URL, the thumbnail and the duration. A video sitemap is published at /sitemap-videos.xml. Both help search engines find and understand each public video.