Skip to content

Video integrations

Videos from Bunny Stream, Cloudflare Stream, Panda Video or your own HLS in lessons and posts, only for people with access. Each provider's link, the step by step to paste it, the Bunny and Cloudflare signing key in Settings › Video integrations, Verify, and what happens when the provider refuses the key.

If you already host your videos on Bunny Stream, Cloudflare Stream, Panda Video or your own HLS, there is nothing to upload again: paste the video link in a video lesson or in the text of a Feed status or a Content post, and the video plays inside Memberfy, in the provider's player (HLS in Memberfy's own player).

  • Only for people with access. The player only goes to people who can see the lesson or the post. Someone who only sees the course outline, a locked lesson, or has no access to the space never gets the video address, not through the API and not through the assistant.
  • The video stays with your provider. Memberfy does not download or copy the video, and it does not use the community's storage: the player plays straight from the origin.
  • With the signing key (Bunny and Cloudflare), the video address expires in 6 hours and does not play outside the community. See Protected video.
ProviderThe link Memberfy acceptsSigning key
Bunny Streamhttps://iframe.mediadelivery.net/embed/{library}/{video} (or /play/), or https://video.bunnycdn.com/play/{library}/{video}Optional
Cloudflare Streamhttps://customer-{code}.cloudflarestream.com/{id}, https://iframe.videodelivery.net/{id} or https://watch.videodelivery.net/{id}Optional
Panda Videohttps://{player}.tv.pandavideo.com.br/embed/?v={id}Not used: plays straight from Panda
HLSAn https://…/file.m3u8 address on a public serverNot used

The address has to belong exactly to one of these services. A look-alike domain (like bunnycdn.com.another-site.net), an http HLS, an IP, a port or an internal server are refused in a lesson; in a post, they stay a plain link.

Step by step

Role: owner or admin for lessons; in the Feed and in Content, whoever can post in the space.

Bunny Stream

  1. In the Bunny dashboard, open the video library (Stream) and the video.
  2. Copy the player link: the https://iframe.mediadelivery.net/embed/… address from the embed code (or the /play/ link).
  3. In Memberfy, paste the link in the lesson's video field (type Video) or in the post text.
  4. If the library requires a token to play (Security › Embed view token authentication), add the key: see Protected video. Without the key, a video from a token-protected library does not play.

Cloudflare Stream

  1. In the Cloudflare dashboard, open Stream and the video.
  2. Copy the player link: https://customer-{code}.cloudflarestream.com/{id} (or the iframe.videodelivery.net one).
  3. Paste the link in the lesson or the post.
  4. If the video requires signed links (Require signed URLs), add the account's signing key (the one you create in Stream › Signing keys).

Panda Video

  1. In the Panda dashboard, open the video and its embed code.
  2. Copy the player address: https://{player}.tv.pandavideo.com.br/embed/?v={id}.
  3. Paste the link in the lesson or the post. Panda takes no key in Memberfy: the video's protection (allowed domains and the like) is set up in Panda itself.

Your own HLS

  1. Copy the address of the video's manifest, which ends in .m3u8 and starts with https://.
  2. Paste it in the lesson or the post. The video plays in Memberfy's player, with controls, full screen and, in a lesson, resuming where the student stopped.
  3. The server has to be public and allow the video to be played from another site (CORS); Memberfy does not pass the video through its servers. If the server does not answer or does not allow it, the player shows "This video could not play here. The origin server did not answer or does not allow playback on this site.", with the Open the video address button.

Protected video (Bunny and Cloudflare)

Role: owner or admin. If the Bunny library or the Cloudflare account requires a token to play, add the community's signing key in Settings › Video integrations (in the Connections group):

ProviderWhat to paste
Bunny StreamIn Token authentication key, the library key, copied from the Bunny dashboard under Security (Embed view token authentication)
Cloudflare StreamIn Key id (keyId), the key id; in Private key (pem or jwk), the pem (base64, as Cloudflare returns it, or as text) or the jwk. With the jwk, the id is optional: its kid is used
  1. Fill it in and click Save key. The screen confirms "Key saved. Check it with one of your videos."
  2. In Check with one of your videos, paste the link of a video from the same provider and click Verify: Memberfy signs that video's link and asks the provider whether it accepts it. Accepted, the key is Valid; refused, Invalid.
  3. Done: the lesson or post video now goes out signed, valid for 6 hours, only for people who could already see it. Someone who copies the player address cannot play it after that.

Each provider shows the key status (No key, Not verified, Valid or Invalid) and the Last check.

  • The key is write-only. Once saved, it is never shown again: only its last 4 characters (for Cloudflare, of the key id). To change it, use Replace key.
  • Remove key asks for the confirmation "Remove the Bunny Stream key?" (or Cloudflare Stream) and deletes the key right away: that provider's videos go out unsigned again and do not play if the library requires a token. Lessons and posts stay as they are.
  • Adding, replacing, verifying and removing go to the Logs, without the key value.
  • Only the owner and the admin see the screen and the keys.

When the provider refuses the key

If the provider refuses the key (when verifying or later, because it was changed there), that provider's videos become unavailable until you add the right key: viewers see "Video unavailable" and "Let the community team know so they can fix it." The owner and the admin get a bell notice, at most once a day, that opens Video integrations; for them, the unavailable video has the Open Video integrations button. Videos from the other providers keep playing.

With the API and the assistant

  • API: the video lesson takes these links in contentUrl and returns the ready player in videoEmbed (provider, kind, src), only for people who can see the lesson; the keys live in /api/video-integrations. See Courses › With the API.
  • MCP: create_lesson and update_lesson take the links; list_video_keys, update_video_key, verify_video_key and delete_video_key (which asks for confirmation) handle the keys, which never come back in the response. See Course tools.

Frequently asked questions

Do I need to upload the video again? No. Use your provider's link.

Can someone copy the link? People with access see the player address. Without the key, it is the provider's address; with the key (Bunny and Cloudflare), it expires in 6 hours.

Does it use the community's storage? No. The video stays with your provider. Only a hosted video on Memberfy counts toward storage.

What about the welcome video? It stays YouTube and Vimeo only. See Welcome.